gpt4 book ai didi

SQL server树有限深度查询

转载 作者:行者123 更新时间:2023-12-05 04:18:26 26 4
gpt4 key购买 nike

我有一棵树,我正试图将其存储在数据库中。现在每一行看起来像

ID, Child1, Child2, Child3, NodeValue

我有 Child1、Child2 和 Child3 作为引用 ID 的外键。

我想做的是:给定一个节点,获取该节点及其所有后代(我猜是“子树”)。但是,我想将节点的深度限制在 4 到 7 左右。

有没有人有一些指点?

编辑:

这是一个例子:

ID   C1   C2   C3
1 10 52 32
2 NULL NULL NULL
3 4 5 6
4 2 NULL NULL
5 NULL NULL NULL
6 NULL NULL NULL
10 3 NULL NULL
52 NULL NULL NULL
32 NULL NULL NULL

如果我想查询第 1 行的深度 2,它将返回 ID 为 1 的行、10、52、32 和 3,但不是 2、4、5 或 6

最佳答案

在 SQL Server 2005 中使用递归 CTE

;WITH cte AS
(
SELECT ID, C1, C2, C3, 0 AS [Level]
FROM dbo.test7
WHERE ID = 1 -- @your root node
UNION ALL
SELECT t.ID, t.C1, t.C2, t.C3, c.[Level] + 1
FROM dbo.test7 t JOIN cte c ON t.ID IN (c.C1, c.C2, c.C3)
WHERE c.[Level] + 1 <= 2 --@your_depth
)
SELECT ID, C1, C2, C3
FROM cte

演示 SQLFiddle

关于SQL server树有限深度查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14331762/

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