ORACLE start with… connect by prior 子句用法
connect by 是結構化查詢中用到的,其基本語法如下:
select … from tablename start with 條件1
connect by prior 條件2
where 條件3;
其中:
條件1 是根結點限定語句,當然也可以放寬限定條件取多個結點,就形成多根樹。
條件2 是連線條件。
條件3 是過濾條件,用於所返回的所有記錄進行過濾。
例如
select * from table
start with fid = ‘G113’
connect by prior fid = pfid
where fflag = ‘Y’;
在一個樹狀儲存表中有兩個欄位,fid和pfid。其中pfid為fid上級記錄的id。
用上述語法的查詢可以取得這棵樹的所有記錄。
掃描順序:
1,從根結點開始;
2,訪問該結點;
3,判斷該結點有無被訪問的子結點,若有,則轉向它的最左側的的未訪問的子結點,並執行第二步,否則執行第四步;
4,若該結點為根節點,則訪問完畢,否則執行第五步;
5,返回該結點的父結點,並執行第三步;
select …
connect by {prior 列名1=列名2|列名1=prior列名2}
[start with];
ORACLE start with… connect by prior 子句用法
connect by 是結構化查詢中用到的,其基本語法如下:
select … from tablename start with 條件1
connect by prior 條件2
where 條件3;
其中:
條件1 是根結點限定語句,當然也可以放寬限定條件取多個結點,就形成多根樹。
條件2 是連線條件。
條件3 是過濾條件,用於所返回的所有記錄進行過濾。
例如
select * from table
start with fid = ‘G113’
connect by prior fid = pfid
where fflag = ‘Y’;
在一個樹狀儲存表中有兩個欄位,fid和pfid。其中pfid為fid上級記錄的id。
用上述語法的查詢可以取得這棵樹的所有記錄。
掃描順序:
1,從根結點開始;
2,訪問該結點;
3,判斷該結點有無被訪問的子結點,若有,則轉向它的最左側的的未訪問的子結點,並執行第二步,否則執行第四步;
4,若該結點為根節點,則訪問完畢,否則執行第五步;
5,返回該結點的父結點,並執行第三步;
select …
connect by {prior 列名1=列名2|列名1=prior列名2}
[start with];