Oracle start with connect by prior用法

分類:編程 時間:2016-11-04
Oracle start with connect by prior用法   語法: select * from 表名 where 條件1 start with 條件2 connect by prior 當前表字段=級聯表字段 start with與connect by prior語句完成遞歸記錄,形成一棵樹形結構,通常可以在具有層次結構的表中使用。 start with表示開始的記錄 connect by prior 指定與當前記錄關聯時的字段關系代碼:  --創建部門表,這是一個具有層次結構的表,子記錄通過parent_id與父記錄的id進行關聯 create table DEPT( ID NUMBER(9) PRIMARY KEY, --部門ID NAME VARCHAR2(100),    --部門名稱 PARENT_ID NUMBER(9)  --父級部門ID,通過此字段與上級部門關聯 ); 向表中插入如下數據,為了使代碼簡單,一個部門僅具有一個下級部門 ●從根節點開始查詢遞歸的記錄 select * from dept start with id=1    connect by prior id = parent_id; 下面是查詢結果,start with id=1表示從id=1的記錄開始查詢,向葉子的方向遞歸,遞歸條件是id=parent_id,當前記錄的id等於子記錄的parent_id  ●從葉子節點開始查詢遞歸的記錄 select * from dept start with id=5 connect by prior parent_id = id;    下面是查詢結果,遞歸條件按照當前記錄的parent_id等與父記錄的id  ●對查詢結果過濾 select * from dept where name like '%銷售%' start with id=1 connect by prior id = parent_id; 在下面的查詢結果中可以看到,首先使用start with... connect by prior查詢出樹形的結構,然後where條件才生效,對全部查詢結果進行過濾    ●prior的作用 prior關鍵字表示不進行遞歸查詢,僅查詢出滿足id=1的記錄,下面是將第一個查詢去掉prior關鍵字後結果 select * from dept start with id=1 connect by prior id = parent_id;   總結: 1)prior放在子節點端,則表示掃描樹是以start with指定的節點作為根節點從上往下掃描。可能對應一個或多個分支。   start with可以省略,如果省略,表示對所有節點都當成根節點分別進行遍歷 2)prior放在父節點端,則表示掃描樹是以start with指定的節點作為最低層子節點,從下往上掃描。順序是子節點往父節點掃描,直到根節點為止,這種情況只能得到一個分支。 start with可以省略,如果省略,表示對所有節點都當成最低層子節點分別往根節點方向遍歷    
Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad