gpt4 book ai didi

sql-server - CTE 返回层次结构中的所有项目

转载 作者:行者123 更新时间:2023-12-02 22:28:31 26 4
gpt4 key购买 nike

我有一个具有递归层次结构的表(即 ID、ParentID)。对于此层次结构中的任何项目,我希望能够带回层次结构上下所有内容的列表以及每行的级别。假设 parent 只能有一个 child 。

以下面的例子为例:

ID    ParentID
--------------
1 NULL
2 1
3 2
4 NULL
5 4
6 5

给定 ID 1、2 或 3,我想返回:

ID    ParentID    Level
-----------------------
1 NULL 1
2 1 2
3 2 3

我以前做过,但我不记得怎么做了。我知道解决方案涉及 CTE,但我做对了!感谢您的帮助。

最佳答案

;with cte as 
(
select *, 1 as level from @t where id = @yourid
union all
select t.*, level - 1
from cte
inner join @t t on cte.parent = t.id
),
cte2 as
(
select * from cte
union all
select t.*, level+1
from cte2
inner join @t t on cte2.id = t.parent

)
select id,parent, ROW_NUMBER() over (order by level) level
from ( select distinct id, parent, level from cte2) v

关于sql-server - CTE 返回层次结构中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com