小编PAP*_*PAP的帖子

进行类似查询的递归 CTE,但对于许多记录

我有一个带有层次结构的表(带有递归 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 似乎只有在您处理一条记录时才可以。

有人能指出我正确的方向吗?

非常感谢

sql-server cte recursive

4
推荐指数
1
解决办法
4827
查看次数

标签 统计

cte ×1

recursive ×1

sql-server ×1