oracle 父子表

 

start with connect by prior 用於B樹結構類型的數據遞歸查詢,給出B樹結構類型中的任意一個結點,遍歷其最終父結點或者子結點。

create table a_test
( parentid number(10),
  subid    number(10));

insert into a_test values ( 1, 2 );
insert into a_test values ( 1, 3 );
insert into a_test values ( 2, 4 );
insert into a_test values ( 2, 5 );
insert into a_test values ( 3, 6 );
insert into a_test values ( 3, 7 );
insert into a_test values ( 5, 8 );
insert into a_test values ( 5, 9 );
insert into a_test values ( 7, 10 );
insert into a_test values ( 7, 11 );
insert into a_test values ( 10, 12 );
insert into a_test values ( 10, 13 );

commit;

select * from a_test;

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

connect by 子句:連接條件。關鍵詞prior,prior跟父節點列parentid放在一起,就是往父結點方向遍歷;prior跟子結點列subid放在一起,則往葉子結點方向遍歷, parentid、subid兩列誰放在“=”前都無所謂,關鍵是prior跟誰在一起。

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

查看示例:

給一個節點去遍歷葉子節點;start with 使用不同結果就不一樣。【必須以父節點開始,如果不是父節點開始就找父節點然後再遍歷。】

給一個節點去遍歷父節點;start with 使用不同結果就不一樣。【必須以子節點開始,如果不是子節點開始就找子節點然後再遍歷。】

使用where 進行過濾

如果是start with t.parentid in (a,b);就可以一次查詢多個樹

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章