显示嵌套的父子关系

时间:2015-05-26 22:08:19

标签: sql-server tsql recursion

我有一张表格如下:

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

正如你所看到的,E是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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

试试这个: 与cte as(   select * from t where id = 5   联合所有   从cte c中选择t.id,t.name,t.pid   在c.pid = t.id上加入t 选择替换(东西((选择' - ' +来自cte的名称) 按ID排序 对于xml路径('')),1,1,''),' - ',' - >' ) 小提琴http://sqlfiddle.com/#!3/6fdde1/19