sql >> Database >  >> RDS >> PostgreSQL

Ik wil een nieuwe kolom retourneren met recursief in SQL?

Dit is een canoniek voorbeeld van MET RECURSIEVE

Probeer dit:

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

Zoals beschreven in de documentatie:

EEN MET RECURSCIEVE is altijd samengesteld door

  1. Een niet-recursieve term
  2. UNIE of UNION ALL
  3. Een recursieve term, de enige die kan verwijzen naar de uitvoer van de zoekopdracht

De recusion stopt wanneer de vorige iteratie geen output heeft.




  1. Het herstellen van de mysql-database geeft fouten

  2. MySQL CSV-import:datetime-waarde

  3. Bitmanipulatie en MySQL ophalen in PHP

  4. Niet-overlappende datum-tijd-gebeurtenissen ontwerpen