1. 程式人生 > 其它 >oracle-- connect by prior

oracle-- connect by prior

記錄一個之前沒用過的方法,可以在聯級查詢的時候查詢查詢根節點及其所有子節點。

程式碼簡化為:

select ... from tablename start with col='' connect by prior col=parent_col where ...;

start with以col欄位為條件指向一個根節點。connect by prior 在根節點後展示所有的子節點,parent_col 是與col相對的父節點欄位。

查詢方式為遞迴方法。

-----------以下為查詢搬運內容------------

{ CONNECT BY [ NOCYCLE ] condition [
AND condition]... [ START WITH condition ] | START WITH condition CONNECT BY [ NOCYCLE ] condition [AND condition]...} 解釋: start with: 指定起始節點的條件 connect by: 指定父子行的條件關係 prior: 查詢父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and ... , nocycle: 若資料表中存在迴圈行,那麼不新增此關鍵字會報錯,新增關鍵字後,便不會報錯,但迴圈的兩行只會顯示其中的第一條 迴圈行: 該行只有一個子行,而且子行又是該行的祖先行 connect_by_iscycle: 前置條件:在使用了nocycle之後才能使用此關鍵字,用於表示是否是迴圈行,0表示否,
1 表示是 connect_by_isleaf: 是否是葉子節點,0表示否,1 表示是 level: level偽列,表示層級,值越小層級越高,level=1為層級最高節點