oracle 層次查詢語句

來源:互聯網
上載者:User

標籤:oracle   connect by/start with   

   Oracle中層次查詢文法:

     select  ...

     [level | connect_by_root |connect_by_isleaf |connect_by_iscycle ]

     from table_name

     [where] 

     connect by { prior col1=col2 | col1=prior col2 }

    [start with]

    [order [siblings] by];

connect by :說明每行資料將是按層次順序檢索,並規定將表中的資料連入樹形結構的關係中。prior運算子必須放置在串連關係的兩列中某一個的前面,對於子節點間的父子關係,prior運算子所在的一側為父節點,另一側的為子節點,從而確定尋找樹形結構的順序是自頂向下還是自底向上。

start with:用於標識哪個節點作為尋找樹形結構的根節點,層次查詢需要確定起始點,通過start with,後加條件。start with將確定將哪行作為root,如果不指定start with,則每行都當做root,然後尋找其後代。start with後可以跟子查詢,如果又where條件,則會截斷層次中滿足相關條件的節點,但不影響整個層次查詢。

level:是一個偽列,代表當前這個節點所在的層級,對於根節點,level返回1,通過這個偽列結合其他oracle函數進行資料的格式化顯示。

connect_by_root:connect_by_root必須和某個欄位搭配使用,目的是擷取根節點記錄的欄位資訊。

connect_by_isleaf:判斷當前結點是否為葉子節點,0表示非葉子節點,1表示是葉子節點。

connect_by_cycle:可以檢查是否在樹形查詢的過程中構成迴圈,這個偽列只是在connect_by_cycle方式下有效。

order siblings by:定義返回時同意父節點下的各個兄弟節點之間的順序。


例子:

--樹形結構表emp;select * from emp;EMP_ID              EMP_NAME              UP_EMP_ID    ---------            ---------------         ---------------  1              USER1              0         2              USER2              13              USER3              1 4              USER4              25              USER5              26              USER6              3--從根節點emp_id=1開始,自頂向下查詢出根節點的所有子節點select  emp_id,emp_name,up_emp_id,levelfrom empstart with emp_id=1connect by prior emp_id=up_emp_idorder siblings by emp_id;EMP_ID                EMP_NAME           UP_EMP_ID                        LEVEL---------              ---------------      ---------------                    --------1               USER1            0                       12               USER2            1                       24               USER4            2                       35               USER5            2                       33               USER3            1                       26               USER6            3                       3--從emp_id=6,自底向上查詢emp_id=6的所有父節點select emp_id,emp_name,up_emp_id from  empstart with emp_id=6connect by emp_id = prior up_emp_idorder by  emp_id;EMP_ID              EMP_NAME             UP_EMP_ID    ---------            ---------------        ---------------  1              USER1             03              USER3             16              USER6             3


本文出自 “天黑順路” 部落格,請務必保留此出處http://mjal01.blog.51cto.com/12140495/1975584

oracle 層次查詢語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.