一、层次查询 START WITH... CONNECT BY PRIOR
START WITH 指定层次的根行(开始的地方)。 这个子句对于一个正确的分级查询是必须的。
CONNECT BY PRIOR 指定列, 其中存在父与子行的关系。对于分级查询该子句是必须的。PRIOR指上一条记录的意思。
CONNECT BY PRIOR COLUMN1 = COLUMN2
遍历方向: 从顶向下 COLUMN1 = PARENT KEY, COLUMN2 = CHILD KEY
从底向上 COLUMN1 = CHILD KEY, COLUMN2 = PARENT KEY
例子:
从顶向下:
SELECT LAST_NAME||' REPORTS TO '||PRIOR LAST_NAME'WALK TOP DOWN'
FROM EMPLOYEES
START WITH LAST_NAME = 'KING'
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID ;
从低向上:
SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, MANAGER_ID
FROM EMPLOYEES
START WITH EMPLOYEE_ID = 101
CONNECT BY PRIOR MANAGER_ID = EMPLOYEE_ID ;
二、LEVEL 伪列
可以用LEVEL和LPAD格式化分级报告