我有一个带有层次结构的表(带有递归 parentID 列),对于一个记录,我知道如何使用以下代码获取最后一个父记录:
declare @Id integer
;WITH CTE AS
(
SELECT a.[Id],
a.[ParentId]
FROM [Area] a WITH (NOLOCK)
where a.[Id] = @Id
UNION ALL
SELECT a.[Id],
a.[ParentId]
FROM [Area] a WITH (NOLOCK)
INNER JOIN CTE cte ON cte.[ParentId] = a.[Id]
)
SELECT top 1 a.[Id]
FROM CTE a
WHERE a.ParentId is null
Run Code Online (Sandbox Code Playgroud)
只要我使用一个 id 就可以工作,这里是 @Id。
但是我找不到一种方法来做同样的事情,但对于 Id 列表,不使用游标,因为 CTE 似乎只有在您处理一条记录时才可以。
有人能指出我正确的方向吗?
非常感谢