gpt4 book ai didi

sql-server - 在数据库表中递归搜索,包括每行的一个到 N 个父项

转载 作者:行者123 更新时间:2023-12-01 13:33:29 24 4
gpt4 key购买 nike

我有一张 table ,看起来像那样

 id   parent_id
1 null
2 1
3 2
4 1
5 3

对于表中的每一行,我想检索有关其父代的信息(从第一代到第 N 代)。这意味着,如果 id = 3 的行有 parent_id = 2 并且 id = 2parent_id = 1,那么 3 也属于 21

我想要得到的结果:

id    multi_level_parent_id
1 null
2 1
3 2
3 1
4 1
5 3
5 2
5 1

我假设,我必须使用递归 select。我写了SQL代码,但它只返回第一代的信息

WITH Rec AS
(
SELECT *
FROM MyTable t
UNION ALL
SELECT *
FROM MyTable t
INNER JOIN Rec r ON t.id = r.parent_id
)

SELECT *
FROM Rec

有人知道如何检索我需要的信息吗?

最佳答案

这就是你想要的:

WITH Rec
AS (
SELECT id,
id AS parent_id,
0 AS steps
FROM MyTable t
UNION ALL
SELECT r.id,
t.parent_id,
r.steps + 1 AS steps
FROM MyTable t
INNER JOIN Rec r ON t.id = r.parent_id)
SELECT id,
parent_id
FROM MyTable
WHERE parent_id IS NULL
UNION ALL
SELECT id,
parent_id
FROM Rec
WHERE parent_id <> id
ORDER BY id;

结果:

enter image description here

关于sql-server - 在数据库表中递归搜索,包括每行的一个到 N 个父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684921/

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