oracle-- connect by prior
阿新 • • 發佈:2022-05-23
記錄一個之前沒用過的方法,可以在聯級查詢的時候查詢查詢根節點及其所有子節點。
程式碼簡化為:
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為層級最高節點