結語
場景:id,name,parent_id資料庫中的資料存在父子關係(單繼承,每一條記錄只有乙個父記錄). 如果要查詢一條記錄以及他的所有子記錄,或者要查詢一條記錄以及他的所有父記錄.那麼遞迴查詢就再合適不過了.可以簡化複雜的sql語句。
現在資料庫有一張dictionary表,用於存放業務相關字典項
idname
parentid
1字典1
null
1-1字典1-1
11-2
字典1-212
字典2null
2-1字典2-1
2
with recursive dict as
(select
*from dictionary
where id=
'1'union
allselect dictionary.
*from dictionary,
dict
where dictionary.parent_id = dict.id
)select id as id, name as name, parent_id as parentid
from dict
order
by name
查詢結果id
name
parentid
1字典1
null
1-1字典1-1
11-2
字典1-2
1
with recursive dict as
(select
*from dictionary
where id=
'2-1'
union
allselect dictionary.
*from dictionary,
dict
where dictionary.id = dict.parent_id
)select id as id, name as name, parent_id as parentid
from dict
order
by name
查詢結果id
name
parentid
2字典2
null
2-1字典2-1
2
sql中with ***x as () 是對乙個查詢子句做別名,同時資料庫會對該子句生成臨時表;with recursive 則是乙個遞迴的查詢子句,他會把查詢出來的結果再次代入到查詢子句中繼續查詢
postgreSQL 遞迴查詢,使用陣列
遞迴查詢使用with recursive 陣列使用array 運用場景 用於統計多個層級中某乙個層級以及下面所有分類的資料 表結構 drop table if exists public test tree create table public test tree id int4 not null...
PostgreSQL 遞迴查詢應用場景
今天在罈子裡有人提出了乙個問題,問題是這樣的 在以下指定表中 id name fatherid 1 中國 0 2 遼寧 1 3 山東 1 4 瀋陽 2 5 大連 2 6 濟南 3 7 和平區 4 8 沈河區 4 現在給定乙個id號,想得到它完整的名字。如 當id 7時,名字是 中國遼寧瀋陽和平區 當...
PostgreSQL遞迴查詢實現樹狀結構查詢
在postgresql的使用過程中發現了乙個很有意思的功能,就是對於需要類似於樹狀結構的結果可以使用遞迴查詢實現。比如說我們常用的公司部門這種資料結構,一般我們設計表結構的時候都是類似下面的sql,其中parent id為null時表示頂級節點,否則表示上級節點id。create table dep...