PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Искам да върна нова колона с помощта на рекурсивно в SQL?

Това е каноничен пример за С РЕКУРСИВНО

Опитайте това:

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

Както е описано в документацията:

A С РЕКУРСИВНО винаги се съставя от

  1. Нерекурсивен термин
  2. СЪЮЗ или СЪЮЗ ВСИЧКИ
  3. Рекурсивен термин, единственият, който може да се отнася до изхода на заявката

Рекусията приключва, когато предишната итерация няма резултат.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHPpgAdmin:Как да изтриете редове без да използвате SQL

  2. Как мога да ускоря разликата между таблиците?

  3. Автоматично увеличаване на частичен първичен ключ с Entity Framework Core

  4. Синтактична грешка при или близо до USING

  5. Как работи Round() в PostgreSQL