oracle遞迴遍歷子節點父節點

2021-09-12 02:23:57 字數 2091 閱讀 6516

一、適用情況:

適用樹狀結構資料,例如包含id,parent_id欄位的資料表 ,表中資料可以通過某些字段找到其中的父子關係。

二、語法:

select  *  from  表名  start  with 條件1  connnect by 條件2  where  條件3
1、舉例:(1)通過父id查詢所有子節點

select * from group_info  start with parent_group_id='0' connect by prior group_id=parent_group_id
(2)通過子id查詢所有父節點

select * from group_info start with group_id='61' connect by prior parent_group_id=group_id
2、說明:(1)start with 後面的條件表示遞迴從**開始。

select *  from group_info  start with parent_group_id='0' connect by prior group_id=parent_group_id  從父編號為0的資料開始查

select *  from group_info  start with group_id='0' connect by prior group_id=parent_group_id 從編號為0的資料開始查

顯然在需要查詢父節點為0的所有子節點時,第二條查詢語句會包含父節點。

(2)connect by 條件2  表示 遞迴時前後兩條資料是以條件2來建立聯絡的

(3)prior的位置決定了遞迴時的具體關係或者說是決定了查詢時的檢索順序。

prior 欄位1=欄位2   可以理解為當前節點的字段1等於下乙個節點的字段2 

select * from group_info start with group_id='5' connect by  parent_group_id= prior group_id
可以理解為 當前節點的group_id 是下乙個節點的parent_group_id ,也就是查詢 父節點下的所有子節點

(當前這條記錄的group_id =下一條記錄的parent_group_id )

select *  from group_info start with group_id='5' connect by   prior   parent_group_id= group_id
可以理解為當前節點的parent_group_id  是下乙個節點的group_id ,也就是查詢子節點的所有父節點

(4)level關鍵字表示層次

可通過level 關鍵字表示查詢結果所在層次,根節點的層號為1

select g.* , level from group_info g start with parent_group_id=0 connect by prior group_id=parent_group_id
查詢效果展示(通過子節點code查詢所有父節點)

oracle樹形結構由子節點遞迴得到父節點

在oracle中如何從子節點記錄向父節點上溯?比如有乙個表 guid parentguid 1 0 2 1 3 1 4 2 5 2 6 5 7 5 8 7 我們從guid為1根據parentguid關係可以查出該guid下的所有子節點.現在要從某一子節點如guid為7,查出它的父節點,7 5 2 1...

oracle樹形結構由子節點遞迴得到父節點

start with connect by 語法結構 其語法結構為 start with condition connect by condition 含 prior 關鍵字 start with conditon 給出的seed 資料的範圍,connect by 後面給出了遞迴查詢的條件,prio...

oracle樹形結構由子節點遞迴得到父節點

在oracle中如何從子節點記錄向父節點上溯?比如有乙個表 guid parentguid 1 0 2 1 3 1 4 2 5 2 6 5 7 5 8 7 我們從guid為1根據parentguid關係可以查出該guid下的所有子節點.現在要從某一子節點如guid為7,查出它的父節點,7 5 2 1...