gpt4 book ai didi

sql - 在自引用表 SQL Server 上查找最高祖 parent

转载 作者:行者123 更新时间:2023-12-02 17:31:57 25 4
gpt4 key购买 nike

我在 SQL Server 中有这个表:

父子
1 2
89 7
2 3
10 5
3 4

我需要构建一个递归存储过程来查找任何 child 的最大上升点。

例如:如果我想找到 4 的最大上升值,它应该返回 1,因为:

4 是 3 的 child 。

3 是 2 的 child 。

2 是 1 的 child 。

所以我可以找到最终的 parent 。

最佳答案

递归 CTE 的完美工作:

;WITH
cte1 AS
( -- Recursively build the relationship tree
SELECT Parent
, Child
, AscendentLevel = 1
FROM my_table
UNION ALL
SELECT t.Parent
, cte1.Child
, AscendentLevel = cte1.AscendentLevel + 1
FROM cte1
INNER JOIN my_table t ON t.Child = cte1.Parent
),
cte2 AS
( -- Now find the ultimate parent
SELECT Parent
, Child
, rn = ROW_NUMBER() OVER (PARTITION BY Child ORDER BY AscendentLevel DESC)
FROM cte1
)

SELECT *
FROM cte2
WHERE rn = 1
OPTION (MAXRECURSION 0)

关于sql - 在自引用表 SQL Server 上查找最高祖 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943721/

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