Det här är ett kanoniskt exempel på MED REKURSIVT
Prova detta:
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
Som beskrivs i dokumentationen:
A Med REKURSKIV är alltid sammansatt av
- En icke-rekursiv term
- UNION eller UNION ALL
- En rekursiv term, den enda som kan referera till frågeutdata
Rekusionen avslutas när den föregående iterationen inte har någon utgång.