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

SQL Server如何根据输入的sourceid查询所有关联嵌套子记录

解决方案

普通自连接仅能实现两层数据的关联查询,无法覆盖不确定深度的嵌套父子关系,你可以使用SQL Server 支持的**递归公用表表达式(CTE)**实现需求,具体写法如下:

-- 定义接收用户输入的目标sourceid变量,可根据实际字段类型调整
DECLARE @InputSourceID VARCHAR(50) = 'A1';

WITH RecursiveChildCTE AS
(
    -- 锚点成员:查询目标sourceid对应的第一层直接子记录
    SELECT *
    FROM testrecords1
    WHERE parentid = @InputSourceID

    UNION ALL

    -- 递归成员:关联上一层查询结果,获取下一级子记录
    SELECT t.*
    FROM testrecords1 t
    INNER JOIN RecursiveChildCTE rc ON t.parentid = rc.sourceid
)
-- 输出所有层级的子记录
SELECT * FROM RecursiveChildCTE;

额外调整说明

  • 如果需要同时返回输入的sourceid对应的根节点本身,可修改锚点成员的筛选条件:
    -- 锚点成员替换为匹配目标sourceid自身
    SELECT *
    FROM testrecords1
    WHERE sourceid = @InputSourceID
    
  • 默认递归深度上限为100,如果数据层级超过100,可在查询末尾添加配置修改最大递归深度:
    -- 示例:设置最大递归深度为1000,填0则为无限制
    SELECT * FROM RecursiveChildCTE OPTION (MAXRECURSION 1000);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:45:03