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

如何用TSQL递归查询Location表中指定ID的全层级关联位置?

完全可行,用TSQL的递归CTE就能搞定

你这个需求属于树形结构的递归查询,核心是获取指定节点的所有层级子节点(包括节点自身)。在TSQL里,递归CTE(公共表表达式)是处理这类问题的标准方案,以下是具体实现:

假设你要查询的目标ID是@TargetId,代码示例如下:

-- 定义要查询的目标ID,替换为你的实际值
DECLARE @TargetId INT = 1;

WITH RecursiveLocations AS (
    -- 锚点成员:先获取指定的目标节点本身
    SELECT Id, MasterLocationId, Name
    FROM Location
    WHERE Id = @TargetId

    UNION ALL

    -- 递归成员:迭代获取所有子节点,直到无更多层级
    SELECT l.Id, l.MasterLocationId, l.Name
    FROM Location l
    INNER JOIN RecursiveLocations r ON l.MasterLocationId = r.Id
)
-- 输出所有符合条件的位置
SELECT * FROM RecursiveLocations;

代码说明:

  • 锚点查询:作为递归的起始点,先筛选出ID等于指定值的节点。
  • 递归逻辑:通过关联当前递归结果集和原表,不断找出父节点在已查询结果中的子节点,重复此过程直到没有新的子节点可添加。
  • 如果只需获取目标节点的所有后代(不含自身),只需把锚点查询的条件改为WHERE MasterLocationId = @TargetId即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:03:23