我知道這是一個常見的「遞歸查找」類型的問題,有很多關於這個問題,但我找不到解決我的特定問題的答案。這是我需要使用我從客戶繼承的數據來解決的問題。SQL Server 2008 R2中的表遞歸查詢
考慮下表的例子(實際數據的簡單版本):
ancestor_page_id parent_page_id page_id page_name
---------------- -------------- ------- ---------
NULL 1 3 ROOT A
NULL 3 4 CHILD A
NULL 4 5 SUB CHILD A
NULL 4 6 SUB CHILD B
NULL 5 7 SUB SUB CHILD A
NULL 2 8 ROOT B
NULL 8 9 CHILD B
NULL 9 10 SUB CHILD C
NULL 9 11 SUB CHILD D
NULL 10 12 SUB SUB CHILD B
我怎麼把它搬進形式:
ancestor_page_id parent_page_id page_id page_name
---------------- -------------- ------- ---------
1 1 3 ROOT A
1 3 4 CHILD A
1 4 5 SUB CHILD A
1 4 6 SUB CHILD B
1 5 7 SUB SUB CHILD A
2 2 8 ROOT B
2 8 9 CHILD B
2 9 10 SUB CHILD C
2 9 11 SUB CHILD D
2 10 12 SUB SUB CHILD B
凡ancestor_page_id
是祖傳parent_page_id
值。
我知道parent_page_id
值1
和2
應該有記錄,但它們不存在(沒有FK約束)。
我希望這是有道理的。請幫忙!
所以,你想在ancestor_page_id列中設置整個序列的第一個「父」? – gotqn
是的,如果我明白你的意思是「序列」。因此,例如'SUB SUB CHILD A'具有'parent_page_id''5'('SUB CHILD A''),其具有'parent_page_id''4'('CHILD_A'),其具有'parent_page_id''3'('ROOT A'),它具有'parent_page_id''1',這就是'ancestor_page_id'變爲 – lozz