gpt4 book ai didi

sql - 获取层次结构表中子项的根父项

转载 作者:行者123 更新时间:2023-12-03 01:13:31 27 4
gpt4 key购买 nike

我有一个包含分层数据的表,结构如下:

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

如果我传递节点 ID,我希望通过在 SQL 中遍历其所有父节点来获取最顶层的节点 ID/详细信息。

我尝试了 CTE,但不知何故无法获得正确的组合。然而,我把它作为一个函数来工作,但它太慢了,我不得不发布这个问题。

在上面的例子中,如果我通过 6,我希望得到最上面的值,即 1。通过遍历 6 => 5 => 3 => 2 => [1](结果)

预先感谢您的帮助。

最佳答案

DECLARE @id INT = 6
;WITH parent AS
(
SELECT id, parentId, 1 AS [level] from tbl WHERE id = @id
UNION ALL
SELECT t.id, t.parentId, [level] + 1 FROM parent
INNER JOIN tbl t ON t.id = parent.parentid
)
SELECT TOP 1 id FROM parent ORDER BY [level] DESC

@TechDo 的答案假设最低的 ID 将是父级。如果您不想依赖于此,则上述查询将按深度排序。

关于sql - 获取层次结构表中子项的根父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523560/

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