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

PostgreSQL单表递归查询:如何通过关联ID获取多层级数据?

PostgreSQL递归查询实现层级关联查询

假设你的表名为your_table(请替换为实际表名),可以通过WITH RECURSIVE实现你需要的递归查询,完整语句如下:

WITH RECURSIVE recursive_query AS (
    -- 初始数据集:获取first_id='3'的所有记录
    SELECT first_id, seconde_id
    FROM your_table
    WHERE first_id = '3'
    UNION ALL
    -- 递归迭代:将上一轮的seconde_id作为新的first_id查询
    SELECT t.first_id, t.seconde_id
    FROM your_table t
    INNER JOIN recursive_query r ON t.first_id = r.seconde_id
)
-- 输出所有层级的结果
SELECT * FROM recursive_query;

语法说明

  1. 初始查询块:返回first_id='3'的原始结果,作为递归的起始数据集
  2. 递归连接块:通过INNER JOIN将递归CTE中的seconde_id与原表的first_id关联,获取下一层级的记录,直到没有新数据返回
  3. UNION ALL vs UNION:如果你的数据存在重复记录,需要去重的话可以将UNION ALL替换为UNION,但UNION ALL性能更优,适合不需要去重的场景

常见失败原因排查

如果之前使用WITH RECURSIVE未成功,可检查以下点:

  • 字段拼写:确认seconde_id(注意拼写是seconde而非second)和表名与实际一致
  • 数据类型:如果first_id是数值类型,不要加单引号,应写为WHERE first_id = 3
  • 关联条件:确保递归部分的t.first_id = r.seconde_id关联逻辑正确,这是递归的核心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:26:10