我知道这是一个常见的“递归查找”类型的问题,有很多关于这个问题,但我找不到解决我的特定问题的答案。这是我需要使用我从客户继承的数据来解决的问题。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