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

Възможно ли е да се направи рекурсивна SQL заявка?

Ето примерен скрипт, използващ общ израз на таблица:

with recursive sumthis(id, val) as (
    select id, value
    from example
    where id = :selectedid
    union all
    select C.id, C.value
    from sumthis P
    inner join example C on P.id = C.parentid
)
select sum(val) from sumthis

Скриптът по-горе създава "виртуална" таблица, наречена sumthis който има колони id и val . Дефинира се като резултат от две селекции, обединени с union all .

Първо select получава корен (where id = :selectedid ).

Второ select следва децата на предишните резултати итеративно, докато няма какво да върне.

След това крайният резултат може да бъде обработен като нормална таблица. В този случай колоната val се сумира.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да използвам заявка с заместител в кавички? (perl / postgresql)

  2. Копиране на Postgres от променлива с CSV данни

  3. Върнете SETOF редове от функцията PostgreSQL

  4. Не може да се дешифрира с помощта на pgcrypto от AES-256-CBC, но AES-128-CBC е наред

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