Oracle connect by prior用法
阿新 • • 發佈:2018-12-27
Oracle 中 connect by prior的用法:層級查詢,用於查詢具有層級關係(樹狀結構)的資料(父子關係、僱傭關係)。
語法:
select [level] ... from table_name
start with condition1
connect by condition2 [prior]
where condition3
例如:
select level,empno,ename,mgr from emp connect by prior empno = mgr start with mgr is null order by 1;
level :代表著節點所在的層
prior : 一個運算子,可以放在等號前後,決定著查詢時的搜尋順序
start with : 表示根節點
connect by :關鍵字,用於連線遞迴查詢的條件
首先,先看一下下面這張表
其中,存在一種僱傭關係,表中存在兩個欄位EMPNO和MGR,通過這兩個欄位可以查詢到僱員的資訊和其領導的資訊。
方法一:通過自連線查詢
select e.ename 員工姓名,f.ename 老闆姓名 from emp e,emp f where e.mgr = f.empno ;
結果:
方法二:使用層次查詢
由於自連線查詢效率低,不合適操作大表,因此可以使用層次查詢來解決。
select level, empno,ename,mgr from emp connect by prior empno = mgr start with mgr is null order by 1;
結果: