使用Oracle遞歸查詢可以處理父子關系記錄,下面就為您介紹這種使用Oracle遞歸查詢處理父子關系記錄的方法,供您參考。
數據庫中常要處理父子關系的記錄,在oracle中可以用Oracle遞歸查詢語句一次把所有的子記錄全部取出來。例如下:
t1
t11
t111
t1111
t12
t121
t1211
db數據字段如下:
task_id task_name t.parent_task_id ***
*** *** *** ***
000001 t1 *** ***
000002 t11 000001 ***
000005 t12 000001 ***
000003 t111 000002 ***
000004 t1111 000003 ***
000006 t121 000005 ***
000007 t1211 000006 ***
*** *** *** ***
查詢語句:
select t.task_id ,t.task_name ,t.parent_task_id
from t_task t s
tart with task_id='000001'
connect by prior task_id = parent_task_id;
結果顯示:
task_id task_name t.parent_task_id
000001 t1
000002 t11 000001
000003 t111 000002
000004 t1111 000003
000005 t12 000001
000006 t121 000005
000007 t1211 000006
strat with 指定層次開始的條件,即是說滿足這個條件的行即可以做為層次樹的最頂層
connect by prior指層之間的關聯條件,即什麼樣的行是上層行的子行(自連接條件)
select level ,id,name,parentid from temptable2
connect by prior parentid(屬於頂層的列)=id(子層的列) start with id =1