软件下载吧文章资讯

分类分类

PostgreSQL树形结构的递归查询示例

2024-02-14 10:20作者:下载吧

背景

处理不确定深度的层级结构,比如组织机构,一个常用的设计是在一张表里面保存 ID 和 Parent_ID ,并且通过自联结的办法构造一颗树。这种方式对写数据的过程很友好,但是查询过程就变得相对复杂。在不引入MPTT模型的前提下,必须通过递归算法来查询某个节点和下级子节点。

Oracle提供的connect by扩展语法,简单好用。但是其他的RDBMS就没这么人性化了(或者我不知道)。最近在项目中使用PostgreSQL来查询树形数据,记录一下。

构造样本数据

drop table if exists demo.tree_data;
create table demo.tree_data (
id integer,
code text,
pid integer,
sort integer
);

insert into demo.tree_data values(1, ‘中国’, null, 1);
insert into demo.tree_data values(2, ‘四川’, 1, 1);
insert into demo.tree_data values(3, ‘云南’, 1, 2);
insert into demo.tree_data values(4, ‘成都’, 2, 1);
insert into demo.tree_data values(5, ‘绵阳’, 2, 2);
insert into demo.tree_data values(6, ‘武侯区’, 4, 1);
insert into demo.tree_data values(7, ‘昆明’, 3, 1);

展开全部

相关文章

说两句网友评论
    我要跟贴
    取消