我有一张这样的桌子
Id Name ReportingId
==
1 Stala Null
2 Coma 1
3 Rita 1
4 Rosy 2
5 sss 4
我想要一个递归查询来查找单列中的所有报告 ID。
例如,对于 id 5,输出应始终为 null
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,输出应始终为 null
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