對於oracle進行簡單樹查詢 遞迴查詢

2021-08-29 19:36:17 字數 852 閱讀 4573

deptid paredeptid name

number number char (40 byte)

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

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

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

可通過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

oracle遞迴查詢 簡單樹查詢

記錄下學習到。從deptid為100的開始往下查詢 即迴圈查詢所有parentid是該記錄deptid的所有記錄 select from dept where start with deptid 100 connect by prior deptid parentid order by 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簡單查詢語句

oracle 簡單查詢語句 1.選擇部門30中的所有員工 select from emp where deptno 30 2.列出所有辦事員的姓名 編號和部門編號 select ename,empno,deptno from emp where job clerk 3.找出佣金高於薪金的員工 sel...