1
Id Name ReportingId
==
1 Stala Null
2 Coma 1
3 Rita 1
4 Rosy 2
5 sss 4
的表我想递归查询找到单个列所有报告的ID。
例如,对于ID 5的输出应达总是空
4
2
1
null
Id Name ReportingId
==
1 Stala Null
2 Coma 1
3 Rita 1
4 Rosy 2
5 sss 4
的表我想递归查询找到单个列所有报告的ID。
例如,对于ID 5的输出应达总是空
4
2
1
null
下面是一个使用递归公用表表达式(CTE)的例子:
; with cte as
(
select ReportingID
from YourTable
where id = 5
union all
select yt.ReportingID
from YourTable yt
join cte
on cte.ReportingID = yt.id
)
select *
from cte
财产以后像这样:
测试数据
DECLARE @T TABLE(Id int,Name VARCHAR(5),ReportingId INT)
INSERT INTO @T
VALUES
(1,'Stala',Null),
(2,'Coma',1),
(3,'Rita',1),
(4,'Rosy',2),
(5,'sss',4)
查询
;WITH CTE
AS
(
SELECT
NULL AS Id,
t.ReportingId
FROM
@T AS t
WHERE
t.Id=5
UNION ALL
SELECT
t.Id,
t.ReportingId
FROM
@T AS t
JOIN CTE
ON t.Id=CTE.ReportingId
)
SELECT
CTE.Id
FROM
CTE
结果
NULL
4
2
1