sql >> Database teknologi >  >> RDS >> PostgreSQL

Jeg vil returnere ny kolonne ved hjælp af Rekursiv i SQL?

Dette er et kanonisk eksempel på MED REKURSIV

Prøv dette:

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 beskrevet i dokumentationen:

A Med RECURSCIVE er altid sammensat af

  1. En ikke-rekursiv term
  2. UNION eller UNION ALL
  3. Et rekursivt udtryk, det eneste, der kan referere til forespørgselsoutputtet

Recusionen ophører, når den forrige iteration ikke har noget output.




  1. Hvordan viser jeg flere stablede kolonner for hvert datointerval i en stablet bjælke

  2. inkludere mysql i cmake

  3. Sådan fungerer TIME_FORMAT() i MariaDB

  4. Tag kontrol over dine data med Microsoft Access