You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何查询指定用户下所有层级汇报链的下属员工ID

SQL Server 不定层级汇报链下属查询方案

你可以用**递归公用表达式(CTE)**实现该需求,无需提前获知汇报链的最大层级,具体实现代码如下:

-- 定义要查询的目标用户ID
DECLARE @TargetUserID INT = 1;

-- 递归CTE遍历所有下属
WITH SubordinateCTE AS (
    -- 锚点成员:获取目标用户的直接下属
    SELECT UserID, ReportsToUserID
    FROM 用户表名 -- 替换成你实际的表名
    WHERE ReportsToUserID = @TargetUserID

    UNION ALL

    -- 递归成员:获取所有下属的下级用户
    SELECT u.UserID, u.ReportsToUserID
    FROM 用户表名 u
    INNER JOIN SubordinateCTE s ON u.ReportsToUserID = s.UserID
)
-- 输出所有下属的用户ID
SELECT UserID FROM SubordinateCTE;

效果验证

  • 当@TargetUserID = 1时,返回结果为3、6,符合预期
  • 当@TargetUserID = 2时,返回结果为4、5、7,符合预期

注意事项

  • 请将代码中的用户表名替换为你实际的用户表名称
  • SQL Server默认递归层级上限为100,如果你的汇报链层级超过100,可以在查询末尾添加层级上限配置,比如设置最大层级为1000:
    SELECT UserID FROM SubordinateCTE OPTION (MAXRECURSION 1000);
    
    如果需要取消层级限制,可以设置为MAXRECURSION 0,注意提前排查是否存在循环汇报的异常数据(比如A的上级是B,B的上级是A),避免出现无限递归。

内容的提问来源于stack exchange,提问作者goxarad784

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:04