oracle中connect by prior學習

來源:互聯網
上載者:User

網上的粘貼過來了



1.oracle中 connect by prior 遞迴演算法

select ... from tablename start with 條件1
connect by 條件2
where 條件3;
例:
select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;
簡單說來是將一個樹狀結構儲存在一張表裡,比如一個表中存在兩個欄位:
org_id,parent_id那麼通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。
用上述文法的查詢可以取得這棵樹的所有記錄。
其中:
條件1 是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
條件2 是串連條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR org_id = parent_id就是說上一條記錄的org_id 是本條記錄的parent_id,即本記錄的父親是上一條記錄。
條件3 是過濾條件,用於對返回的所有記錄進行過濾簡單介紹如下:
早掃描樹結構表時,需要依此訪問樹結構的每個節點,一個節點只能訪問一次,其訪問的步驟如下:
第一步:從根節點開始;
第二步:訪問該節點;
第三步:判斷該節點有無未被訪問的子節點,若有,則轉向它最左側的未被訪問的子節,並執行第二步,否則執行第四步;
第四步:若該節點為根節點,則訪問完畢,否則執行第五步;
第五步:返回到該節點的父節點,並執行第三步驟。

總之:掃描整個樹結構的過程也即是中序遍曆樹的過程。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.