1. 程式人生 > >oracle中Connect By用法介紹

oracle中Connect By用法介紹

為解決oracle中自連線查詢不適合操作大表的情況,採用connect by 方式實現。oracle中可以用START WITH...CONNECT BY PRIOR子句實現遞迴查詢,connect by 在結構化查詢中應用。

基本語法:

            select ... from <TableName>
                   where <Conditional1>
                   connect by <Conditional2>  

                   start with <Conditional3>

connect by 和start with的先後順序可以調換

其中:

Conditional1是過濾條件,用於對返回的所有記錄進行過濾。
Conditional2是連線條件

Conditional3是過濾條件,用於對返回的所有記錄進行過濾。

select * From emp;   其中empno(員工編號),mgr(經理編號)

可以對其中員工和經理對應關係整理如下:其中下一級節點的經理號是上一級的員工號

查詢語句:

          SQL> select level 級數 ,connect_by_isleaf 是否葉子 ,  ename 員工姓名 ,mgr 經理號 from emp connect by  prior empno=mgr start with mgr is null;

level,connect_by_isleaf,connect_by_iscycle偽列

level      就是這個資料屬於哪一個等級

connect_by_isleaf       就是樹的葉子節點

connect_by_iscycle    導致出現死迴圈的那個樹枝

prior運算子必須放置在連線關係的兩列中某一個的前面。對於節點間的父子關係,prior運算子在一側表示父節點,在另一側表示子節點,從而確定查詢樹結構是的順序是自頂向下還是自底向上