定义父/子关系
对于任何给定行,其父级和子级均由 CONNECT BY 子句确定。CONNECT BY 子句必须由使用等号 (=) 进行比较的两个表达式组成。此外,这两个表达式之一必须前面带有关键字 PRIOR。
对于任何给定行,要确定其子级,请执行以下操作:
- 对给定行计算 parent_expr
- 对计算 table_expression 所得的任何其他行计算 child_expr
- 如果 parent_expr = child_expr,则该行就是给定父行的子节点。
- 对 table_expression 中的所有其余行重复上述过程。符合步骤 3 中的等式的所有行均是给定父行的子节点。
说明 将先对 table_expression 返回的每一行执行用于确定行是否为子节点的计算过程,然后才将 WHERE 子句应用于 table_expression。
通过反复重复此过程,将先前步骤中找到的每个子节点视为父节点,从而构造一个倒置的节点树。当最后一组子节点没有自己的子级时,该过程便完成;这些节点是叶节点。
包含 CONNECT BY 子句的 SELECT 命令通常包含 START WITH 子句。START WITH 子句确定要作为根节点的行;即,这些行是要应用前面描述的算法的初始父节点。这将在下一节中进一步说明。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论