这是WITH RECURSIVE的典型示例
使用RECURSIVE,WITH查询可以引用其自身的输出。
试试这个:
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 ejoin subordinates a on a.employeid = e.managerid -- recursive term) select * from subordinates
如文档中所述:
一个 WITH RECURSCIVE 总是由组成
- 非递归项
- UNIOn 或 UNIOn ALL
- 一个递归术语, 唯一可以引用查询输出的* 术语 *
当先前的迭代没有输出时,终止将终止。



