gpt4 book ai didi

SQL Tree 在特定级别查找祖先

转载 作者:行者123 更新时间:2023-12-02 23:22:15 25 4
gpt4 key购买 nike

假设我有以下树:

CREATE TABLE Tree(Id int, ParentId int, Name varchar(20), Level int)

INSERT INTO Tree(Id, ParentId, Name, Level)
SELECT 1, NULL, 'Bob', 0 UNION ALL
SELECT 2, 1, 'John', 1 UNION ALL
SELECT 3, 1, 'Bill', 1 UNION ALL
SELECT 4, 3, 'Peter', 2 UNION ALL
SELECT 5, 4, 'Sarah', 3

我需要一个脚本来查找特定级别的给定节点的祖先:

例如,Sarah 在 2 级的祖先是 Peter,Peter 在 0 级的祖先是 Bob。

有没有一种简单的方法可以使用分层 CTE 来做到这一点? sqlfiddle

最佳答案

你可以这样做:

;WITH TreeCTE
AS
(
SELECT Id, ParentId, Name, Level
FROM Tree
WHERE Id = 5
UNION ALL
SELECT t.Id, t.ParentId, t.Name, t.Level
FROM TreeCTE AS c
INNER JOIN Tree t ON c.ParentId = t.Id
)
SELECT * FROM TreeCTE;

这将为您提供从 Sarah 开始的父子链与 id = 5以最上面的父级结尾 parentid = NULL .

这里是the updated sql fiddle

关于SQL Tree 在特定级别查找祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581841/

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