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

PostgreSQL 11递归查询问题:指定单元及其子单元查询结果错误

PostgreSQL 11递归查询指定单元及其子单元的正确实现

你的问题出在递归查询时使用了非精确的字符串匹配逻辑,导致ID包含"UN-25"的UN-255被错误纳入结果集。以下是修正后的精确递归查询方案:

正确的递归CTE查询代码

WITH RECURSIVE unit_hierarchy AS (
    -- 锚点:选中目标根单元UN-25
    SELECT id, parentid
    FROM unit
    WHERE id = 'UN-25'
    UNION ALL
    -- 递归:精确匹配子单元的parentid与上层节点的id
    SELECT u.id, u.parentid
    FROM unit u
    INNER JOIN unit_hierarchy uh ON u.parentid = uh.id
)
SELECT id, parentid FROM unit_hierarchy;

逻辑说明

  • 锚点成员直接定位到根节点UN-25,作为递归的起始点。
  • 递归成员通过严格相等判断(u.parentid = uh.id)关联子节点,只会返回parentid完全等于上层节点ID的记录,彻底避免了字符串包含关系带来的误匹配问题。

执行该查询后,会准确返回期望的结果:

idparentid
UN-25
UN-30UN-25
UN-31UN-25
UN-40UN-30
UN-41UN-30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:32:10