轉自:https://blog.csdn.net/WuLex/article/details/82773890
數據說明一切:

總結:
1)prior
放在子節點端,則表示掃描樹是以start with
指定的節點作為根節點從上往下掃描。可能對應一個或多個分支。start with
可以省略,如果省略,表示對所有節點都當成根節點分別進行遍歷
2)prior
放在父節點端,則表示掃描樹是以start with
指定的節點作為最低層子節點,從下往上掃描。順序是子節點往父節點掃描,直到根節點為止,這種情況只能得到一個分支。start with
可以省略,如果省略,表示對所有節點都當成最低層子節點分別往根節點方向遍歷
最后會了上面大家應該知道下面 sys_connect_path()
sys_connect_by_path
函數主要作用是可以把一個父節點下的所有子節點通過某個字符進行區分,然后連接在一個列中顯示:
oracle遞歸查詢子節點
通過子節點向根節點追朔.
備注:
start with ...connect by
的用法,start with
后面所跟的就是就是遞歸的種子。
遞歸的種子也就是遞歸開始的地方 connect by
后面的"prior
" 如果缺省:則只能查詢到符合條件的起始行,並不進行遞歸查詢;connect by prior
后面所放的字段是有關系的,它指明了查詢的方向。
練習: 通過子節點獲得頂節點
select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
表結構