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

PostgreSQL中查询指定根节点'0'的层级数据(含根节点)

PostgreSQL 获取指定根节点的所有子节点(含自身)

假设我们有如下结构的表(可替换为你的实际表名,这里以tree_nodes为例):

IdParentId
0null
10
20
31
anull
ba

要筛选出根节点为'0'的所有层级节点(包含根节点本身),可以用PostgreSQL原生支持的**递归CTE(WITH RECURSIVE)**实现,这是处理树形结构数据的标准方案:

WITH RECURSIVE node_tree AS (
    -- 锚点:选中指定根节点作为递归起点
    SELECT Id, ParentId
    FROM tree_nodes
    WHERE Id = '0'
    
    UNION ALL
    
    -- 递归:关联子节点,不断向下遍历
    SELECT tn.Id, tn.ParentId
    FROM tree_nodes tn
    INNER JOIN node_tree nt ON tn.ParentId = nt.Id
)
SELECT * FROM node_tree;

逻辑说明:

  1. 锚点部分先获取根节点'0';
  2. 递归部分通过自连接,把当前节点的子节点(tree_nodes中ParentId匹配递归结果集Id的记录)持续加入结果;
  3. UNION ALL保证所有层级的节点都被保留,直到没有子节点可遍历为止。

执行后得到的结果与预期一致:

IdParentId
0null
10
20
31

如果你的表名、字段名不同,替换对应名称即可,无需依赖额外扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:09:25