これは、再帰的 の標準的な例です。
これを試してください:
with recursive subordinates as
(select
employeid,
e.managerid,
e.managerid as leader
from employes e
where e.managerid in(select * from leaders) -- non recursive term
union
select
e.employeid,
e.managerid,
a.managerid as leader
from employes e
join subordinates a on a.employeid = e.managerid -- recursive term
) select * from subordinates
ドキュメントに記載されているとおり:
再発あり 常に
によって構成されます- 非再帰的な用語
- ユニオン またはUNIONALL
- 再帰用語。クエリ出力を参照できる唯一の用語
前の反復に出力がない場合、反省は終了します。