层次查询

层次查询

SELECT [LEVEL], column, expr...  
FROM   table  
[WHERE condition(s)]  
[START WITH condition(s)]  
[CONNECT BY PRIOR condition(s)] ;  
CONNECT BY PRIOR column1 = column2; 

–LEVEL:节点的层次,伪列,由查询的起点开始算起为1,依次类推。 
–FROM table:指定表、视图或包含列的快照,你只能从单独的一个表中选择。
–WHERE:限制返回的行。
–Condition:是一个比较式。
–START WITH:指定层次的根行(起点)。这个子句对于一个正确的分级查询 是必须的。
–CONNECT BY PRIOR:指定存在父与子行的关系列。对于分级查询该子句是 必须的。

column1为父节点,column2为子节点 自顶向下
column1为子节点,column2为父节点 自底向上

修剪节点、分支

通过where去除子句某个节点

通过connect by去掉一个分支