select empno,ename,mgr,level from emp start with mgr=7566 connect by prior mgr=empno ;
EMPNO ENAME MGR LEVEL
---------- ---------- ---------- ----------
7788 SCOTT 7566 1
7566 JONES 7839 2
7839 KING 3
7902 FORD 7566 1
7566 JONES 7839 2
7839 KING 3
6 rows selected.
从mgr=7566的记录开始,向根节点遍历,如果有多条记录的mgr=7566,那么每条记录分别遍历一直到根。start with相当于where条件可以由and或者or或者not连接多个条件表达式,mgr可以是任意column。注意一定要加prior关键字。level是伪列表示从mgr=7566的记录开始(第一层)向上遍历的层次数。
select empno,ename,mgr,level from emp start with mgr=7566 connect by prior empno=mgr;
EMPNO ENAME MGR LEVEL
---------- ---------- ---------- ----------
7788 SCOTT 7566 1
7876 ADAMS 7788 2
7902 FORD 7566 1
7369 SMITH 7902 2
从mgr=7566的记录开始,向叶子节点遍历,如果有多条记录的mgr=7566,那么每条记录分别遍历一直到叶子节点。start with相当于where条件可以由and或者or或者not连接多个条件表达式,mgr可以是任意column。注意一定要加prior关键字。level是伪列表示从mgr=7566的记录开始(第一层)向下遍历的层次数。
select sys_connect_by_path(empno,'/') from emp start with empno=7566 connect by prior empno=mgr;
SYS_CONNECT_BY_PATH(EMPNO,'/')
------------------------------------------------------------------------------------------------------------------------
/7566
/7566/7788
/7566/7788/7876
/7566/7902
/7566/7902/7369
sys_connect_by_path是遍历到当前节点所经历的节点记录,"/"是分隔号,注意不要用","否则会报错。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20844861/viewspace-594623/ ,如需转载,请注明出处,否则将追究法律责任。