oracle遞迴查詢子節點

2021-10-25 11:40:40 字數 981 閱讀 7454

通過子節點向根節點追朔.

select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
通過根節點遍歷子節點(不包含根節點).

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
通過根節點遍歷子節點(包含根節點).

select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid
可通過level 關鍵字查詢所在層次.

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
備註:

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

表結構deptid paredeptid name

number number char (40 byte)

部門id 父部門id(所屬部門id) 部門名稱

oracle遞迴查詢子節點

通過子節點向根節點追朔.select from persons.dept start with deptid 76 connect by prior paredeptid deptid 通過根節點遍歷子節點 不包含根節點 select from persons.dept start with par...

oracle遞迴查詢子節點

通過子節點向根節點追朔.select from persons.dept start with deptid 76 connect by prior paredeptid deptid 通過根節點遍歷子節點 不包含根節點 select from persons.dept start with par...

父節點遞迴查詢和子節點遞迴查詢函式

由於在專案中用到了向上查詢父節點的遞迴查詢和向下查詢子節點查詢的遞迴查詢,由於在實現過程中,寫遞迴查詢的sql函式 花費了較長的時間,所以在此總結一下,兩種遞迴查詢的函式的實現寫法 向下查詢子節點的遞迴查詢 先展示表結構 根據區域查詢對應的下級區域資訊,其中parentid為zoneid對應的下級區...