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

SQL Server树层级查询:如何获取所有节点与后代节点的全部对应组合

SQL Server 递归查询全量文件夹祖先-后代对应组合

问题核心

原有递归逻辑仅存储单个节点的ID和直接父ID,没有传递祖先节点的关联上下文,因此只能输出直接父子节点对,无法生成隔代的对应关系。

修正后的查询语句

WITH RecursiveFolderRelations AS
(
    -- 锚点成员:先加载所有直接父子关联对
    SELECT 
        ParentId AS FolderId,
        Id AS DescendantFolderId
    FROM [Folders]
    WHERE ParentId IS NOT NULL

    UNION ALL

    -- 递归成员:将现有祖先ID与下一级后代节点关联,生成跨代对应关系
    SELECT 
        r.FolderId,
        f.Id AS DescendantFolderId
    FROM RecursiveFolderRelations r
    INNER JOIN [Folders] f 
        ON r.DescendantFolderId = f.ParentId
)
SELECT FolderId, DescendantFolderId
FROM RecursiveFolderRelations
ORDER BY FolderId, DescendantFolderId

逻辑说明

  1. 锚点阶段先获取所有一级父子关联,对应你原有查询的输出结果
  2. 递归阶段每次基于已有的关联对,把祖先ID和后代的子节点做绑定,例如锚点拿到(2,4)的同时,会自动关联到2的祖先节点1,生成(1,4)的隔代关联
  3. 最终输出的结果天然去重,不需要额外加DISTINCT关键字,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:33:00