時間:2024-02-14 10:20作者:下載吧人氣:22
背景
處理不確定深度的層級結構,比如組織機構,一個常用的設計是在一張表里面保存 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);
網友評論