oracle樹中prior的用法


轉自: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

表結構

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM