我有以下一组数据:

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/

10-10 11:49