with sys_useras(
select1 userid,'top manager' username,null leaderid from dual unionall
select20,'manager1',1from dual unionall
select30,'manager2',1from dual unionall
select201,'jeff' ,20from dual unionall
select202,'linda',20from dual unionall
select301,'jessie',30from dual unionall
select302,'kate',30from dual unionall
select303,'steven',30from dual
)
select username
from sys_user
startwith username='top manager'
connectbyprior userid=leaderid
1 topmanager
2 manager1
3 jeff
4 linda
5 manager2
6 jessie
7 kate
8 steven
with sys_useras(
select1 userid,'top manager' username,null leaderid from dual unionall
select20,'manager1',1from dual unionall
select30,'manager2',1from dual unionall
select201,'jeff' ,20from dual unionall
select202,'linda',20from dual unionall
select301,'jessie',30from dual unionall
select302,'kate',30from dual unionall
select303,'steven',30from dual
)
selectSYS_CONNECT_BY_PATH(username, '/') "Path"
from sys_user
startwith username='top manager'
connectbyprior userid=leaderid
1 /topmanager
2 /topmanager/manager1
3 /topmanager/manager1/jeff
4 /topmanager/manager1/linda
5 /topmanager/manager2
6 /topmanager/manager2/jessie
7 /topmanager/manager2/kate
8 /topmanager/manager2/steven
START WITH 代表你要开始遍历的的节点!
CONNECT BY PRIOR 是标示父子关系的对应!
通过这个发现,这个其实好像一颗中序遍历的树。