ORACLE 樹結構查詢 start with id = 'root_number' connect by prior id = parentId.

來源:互聯網
上載者:User

標籤:記錄   art   log   gif   複製   mit   insert   分享   title   

這個子句主要是用於B樹結構類型的資料遞迴查詢,給出B樹結構類型中的任意一個結點,遍曆其最終父結點或者子結點。

先看未經處理資料:

 1 create table a_test 2 ( parentid varchar2(10), 3   subid    varchar2(10)); 4  5 insert into a_test values ( ‘1‘, ‘2‘ ); 6 insert into a_test values ( ‘1‘, ‘3‘ ); 7 insert into a_test values ( ‘2‘, ‘4‘ ); 8 insert into a_test values ( ‘2‘, ‘5‘ ); 9 insert into a_test values ( ‘3‘, ‘6‘ );10 insert into a_test values ( ‘3‘, ‘7‘ );11 insert into a_test values ( ‘5‘, ‘8‘ );12 insert into a_test values ( ‘5‘, ‘9‘ );13 insert into a_test values ( ‘7‘, ‘10‘ );14 insert into a_test values ( ‘7‘, ‘11‘ );15 insert into a_test values ( ‘10‘, ‘12‘ );16 insert into a_test values ( ‘10‘, ‘13‘ );17 18 commit;19 20 select * from a_test;

 

對應B樹結構為:

 

 

接下來看一個樣本:

要求給出其中一個結點值,求其最終父結點。以7為例,看一下代碼

start with 子句:遍曆起始條件,有個小技巧,如果要查父結點,這裡可以用子結點的列,反之亦然。

connect by 子句:串連條件。關鍵詞prior,prior跟父節點列parentid放在一起,就是往父結點方向遍曆;prior跟子結點列subid放在一起,則往葉子結點方向遍曆,

                         parentid、subid兩列誰放在“=”前都無所謂,關鍵是prior跟誰在一起。

order by 子句:排序,不用多說。

--------------------------------------------------

下面看看往葉子結點遍曆的例子:

這裡start with 子句用了parentid列,具體區別後面舉例說明。

connect by 子句中,prior跟subid在同一邊,就是往葉子結點方向遍曆去了。因為7有兩個子結點,所以第一級中有兩個結果(10和11),10有兩個子結點(12,13),11無,所以第二級也有兩個結果(12,13)。即12,13就是葉子結點。

 

 

 

下面看下start with子句中選擇不同的列的區別:

以查詢葉子結點(往下遍曆)為例

結果很明顯,原意是要以7為父結點,遍曆其子結點,左圖取的是父結點列的值,結果符合原意;右圖取的是子結點列的值,結果多餘的顯示了7 的父結點3.

---------------------------------------

關於where條件的語句,以後驗證後再記錄。先留個疑問

 

  

ORACLE 樹結構查詢 start with id = 'root_number' connect by prior id = parentId.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.