我有以下一组数据:
ID ParentID
----------- ---------
8320 NULL
8321 8320
8322 8320
8323 8322
8325 NULL
8328 8325
8329 8328
我想要实现的是选择属于特定 ID 的所有行。例如,如果我查询 ID = 8320,则必须返回以下数据:
ID ParentID
----------- ---------
8320 NULL
8321 8320
8322 8320
8323 8322
到目前为止,这是我尝试过但没有真正成功的方法。
select *
from JobQueueLog JQL
left join JobQueueLog JQLC on
JQL.ID = JQLC.ParentID
and JQLC.ParentID is not null
where JQL.ID = 8320
请问有什么帮助吗?
最佳答案
您需要使用 CTE 并进行递归查询
with tmp (id, parentid) as (
select id, parentid
from rec
where id = 8320
union all
select rec.id, rec.parentid
from tmp
inner join rec on tmp.id = rec.parentid
)
select id, parentid
from tmp
关于sql - 如何进行递归连接以使用 SQL 获取最低级别的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39974376/