gpt4 book ai didi

sql-server - 如何遍历与自身有关系的表?

转载 作者:行者123 更新时间:2023-12-03 16:29:40 24 4
gpt4 key购买 nike

我有如下表格

Node_Id     Node_Name     Parent_Node_Id
------- --------- --------------
1 Root 0
2 Node1 1
3 Node2 1
4 Node3 2
5 Node4 2
6 Node5 5
7 Node6 5
8 Node7 7

表的每一行都有一个父行,由“Parent_Node_Id”指示,每个行/节点可以是任意数量的行/节点的父级。

如何编写一个查询,该查询将提供所有节点的列表,这些节点的父节点都共享相同的父节点? Parent_Node_Id 将作为参数传递。例如,如果 Parent_Node_Id 作为 2 传递,查询将返回以下内容 -

Node_Id     Node_Name     Parent_Node_Id
------- --------- --------------
4 Node3 2
5 Node4 2
6 Node5 5
7 Node6 5
8 Node7 7

最佳答案

;WITH CTE AS (
SELECT Node_Id,Node_Name, Parent_Node_Id
FROM @a WHERE Parent_Node_Id = 2
UNION ALL
SELECT c.Node_Id,c.Node_Name, c.Parent_Node_Id
FROM @a c
INNER JOIN CTE p ON p.Node_Id = c.Parent_Node_Id
)
Select * from CTE

带有示例数据

Declare @a Table( Node_Id int,    Node_Name varchar(100),     Parent_Node_Id int)
insert into @a

select 1,'Root',0
UNION SELECT 2,'Node1',1
UNION SELECT 3,'Node2',1
UNION SELECT 4,'Node3',2
UNION SELECT 5,'Node4',2
UNION SELECT 6,'Node5',5
UNION SELECT 7,'Node6',5
UNION SELECT 8,'Node7',7

关于sql-server - 如何遍历与自身有关系的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16759496/

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