oracle樹遞迴查詢

2021-05-23 01:15:54 字數 1887 閱讀 5994

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

deptid

paredeptid

name

number

number

char (40 byte)

部門id

父部門id(所屬部門id)

部門名稱

sql**

通過子節點遍歷根節點.  

select*frompersons.deptstartwithdeptid=76connect

by

priorparedeptid=deptid   

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

sql**

select*frompersons.deptstartwithparedeptid=0connect

by

priordeptid=paredeptid   

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

sql**

selecta.*,level

frompersons.dept astartwithparedeptid=0connect

by

priordeptid=paredeptid

再次複習一下:start with ...connect by 的用法, start with 後面所跟的就是就是遞迴的種子。

遞迴的種子也就是遞迴開始的地方 connect by 後面的"prior" 如果預設:則只能查詢到符合條件的起始行,並不進行遞迴查詢;

connect by prior 後面所放的字段是有關係的,它指明了查詢的方向。

練習: 通過子節點獲得頂節點

sql**

selectfirst_value(deptid) over (order

by

level

desc

rowsunbounded preceding)asfirstdeptid 

frompersons.dept startwithdeptid=76connect

by

priorparedeptid=deptid  

oracle 遞迴查詢 樹查詢

通過根節點遍歷子節點.select level,a.deptproperty,a.from sys org a start with a.parentid 0 connect by prior a.org objid a.parentid 通過子節點獲取頂節點 select first value ...

oracle遞迴查詢 簡單樹查詢

記錄下學習到。從deptid為100的開始往下查詢 即迴圈查詢所有parentid是該記錄deptid的所有記錄 select from dept where start with deptid 100 connect by prior deptid parentid order by deptid...

Oracle遞迴查詢 樹型查詢

prior放的左右位置決定了檢索是自底向上還是自頂向下.左邊是自上而下 找子節點 右邊是自下而上 找父節點 select t.area code,t.area name,t.area level from tbl sys area code t connect by prior t.area cod...