我有一个包含自引用外键的表。类似于员工表,其中每个员工都有报告管理员,并且是分层的。这是这样一张桌子的图像。在此表中,ParentId是指向Id列的外键。
所以,问题是我想在这个表上运行一个带有给定Id的选择查询,该查询应该返回所有与请求ID分层连接的父项。换句话说,例如,如果我要求Id 14,它应该返回我ID
[14 - 11 - q],
[11 - 8 - m],
[8 - 7 - j],
[7 - 4 - h],
[4 - 2 - e],
[2 - 1 - c],
[1 - 1 - b].
有人可以告诉我T-SQL中的查询应该是什么吗?感谢。
答案 0 :(得分:0)
是的,你可以通过下面的递归CTE来做到这一点 的 See live demo 强>
; with rcte as
(
select id, parentid, name
from yourtable
where id=8
union all
select t.id,t.parentid,t.name
from yourtable t join rcte r
on t.id=r.parentid and t.id<>t.parentid
)
select * from rcte option (maxrecursion 0);