gpt4 book ai didi

sql - 从层次表SQL中按关系顺序选择所有父级

转载 作者:行者123 更新时间:2023-12-04 20:56:03 27 4
gpt4 key购买 nike

我有一个这样的表,在同一个表中有一个父子关系

帐号|家长 ID |用户名
----------------------------------------------
1 | 0 |根
2 | 1 | child 1
3 | 1 | child 2
4 | 2 | child 3
5 | 4 | child 1
6 | 5 | child 1
7 | 6 | child 1
8 | 6 | child 1

因此,当我发送帐户 ID 7 时,我必须按照 child 、父亲、祖父这样的顺序获取表格......所以对于 7,我需要像这样获取所有 parets

帐户ID
---------
7
6
5
4
2
1

所以最重要的一点是顺序。它应该是从底层到下一个更高然后到下一个......

最佳答案

您可以使用 recursive CTE :

declare @childAccID int
set @childAccID = 7

;WITH Rec_CTE
AS(
SELECT 1 AS Level,
tChild.*
FROM dbo.TableName tChild
WHERE tChild.AccountID = @childAccID

UNION ALL

SELECT Level + 1 AS Level,
parent.*
FROM Rec_CTE tParent
INNER JOIN dbo.TableName parent
ON parent.AccountID = tParent.ParentID
)
SELECT * FROM Rec_CTE
ORDER BY Level

DEMO

关于sql - 从层次表SQL中按关系顺序选择所有父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18527034/

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