1. 程式人生 > >Oracle connect by prior用法

Oracle connect by prior用法

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;

結果: