gpt4 book ai didi

sql-server - 显示嵌套的父子关系

转载 作者:行者123 更新时间:2023-12-03 11:24:36 27 4
gpt4 key购买 nike

我有一个包含一些数据的下表:

ID        Name       ParentID
-----------------------------
1 A NULL
2 B NULL
3 C 1
4 D 2
5 E 3

如您所见,E 是 C 的子代,而 C 是 A 的子代。我正在寻找一个简单的 SQL 查询,它可以在给定子代 ID 的情况下返回如下所示的字符串,例如ID = 5,也就是 E 应该有如下内容:

Data
-----
A -> C -> E

我已经尝试过下面的查询,但坚持前进的道路

SELECT a.ID,
a.Name,
COALESCE(b.Name, '->') AS 'ParentName'
FROM MyTable AS a
LEFT JOIN MyTable AS b ON a.ID = b.ID
WHERE a.ID = 5

如有任何帮助,我们将不胜感激。

最佳答案

试试这个:

with cte as(
select * from t where id = 5
union all
select t.id, t.name, t.pid from cte c
join t on c.pid = t.id)
select replace(stuff((select '-' + name from cte
order by id
for xml path('')), 1, 1, ''), '-', '->')

fiddle http://sqlfiddle.com/#!3/6fdde1/19

关于sql-server - 显示嵌套的父子关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469783/

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