postgresql树状结构查询示例

本文介绍了如何在PostgreSQL数据库中创建树状结构表,通过递归查询语句查询根节点及其子节点,展示了如何获取树中所有节点及其路径的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

postgresql树状结构查询示例
  • 创建一张表 TREE_TEST,表中包含三个字段:ID、NAME 和 PARENT_ID。其中,ID 是主键,NAME 用于存储节点名称,PARENT_ID 用于存储父节点的 ID。
CREATE TABLE TREE_TEST (  
  ID INTEGER PRIMARY KEY,  
  NAME VARCHAR(32),  
  PARENT_ID INTEGER REFERENCES TREE_TEST(ID)  
);
  • 插入几条测试数据。例如,插入以下数据:
INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(1, 'TREE_1', NULL);  
INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(11, 'TREE_11', 1);  
INSERT INTO TREE_TEST(ID, NAME, PARENT_ID) VALUES(12, 'TREE_12', 1);

这样就创建了一个简单的树状结构,根节点是 TREE_1,它有两个子节点 TREE_11 和 TREE_12。

  • 执行树状结构查询。例如,要查询根节点为 TREE_1 的整个树结构,可以使用递归查询语句:
WITH RECURSIVE tree_path (id, name, parent_id, path) AS (  
  SELECT id, name, parent_id, name  
  FROM TREE_TEST  
  WHERE name = 'TREE_1'  
  UNION ALL  
  SELECT t.id, t.name, t.parent_id, tp.path || '->' || t.name  
  FROM TREE_TEST t  
  JOIN tree_path tp ON t.parent_id = tp.id  
)  
SELECT * FROM tree_path;
  • 这个查询语句会返回一个包含树中所有节点及其路径的列表。在这个例子中,它会返回以下结果:
id | name  | parent_id |         path            |  
---|-------|----------|--------------------------|  
 1 | TREE_1 |      NULL |          TREE_1        |  
11 | TREE_11 |       1 |       TREE_1->TREE_11    |  
12 | TREE_12 |       1 |       TREE_1->TREE_12    |

over~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值