PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy można wykonać rekurencyjne zapytanie SQL?

Oto przykładowy skrypt używający wspólnego wyrażenia tabelowego:

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

Powyższy skrypt tworzy „wirtualną” tabelę o nazwie sumthis który ma kolumny id i val . Jest zdefiniowany jako wynik dwóch wyborów połączonych z union all .

Najpierw select pobiera root (where id = :selectedid ).

Drugi select podąża za dziećmi poprzednich wyników iteracyjnie, aż nie ma nic do zwrócenia.

Wynik końcowy można następnie przetworzyć jak normalną tabelę. W tym przypadku kolumna val jest sumowana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z zapytania Hibernate:dwukropek jest traktowany jako parametr / dwukropek ucieczki

  2. Jak wykonać kopię zapasową pojedynczej tabeli w bazie postgres?

  3. Jak mogę (lub mogę) WYBRAĆ ODRĘBNE w wielu kolumnach?

  4. Dlaczego PostgreSQL wykonuje sekwencyjne skanowanie indeksowanej kolumny?

  5. Jak wyświetlić numery wierszy w zapytaniu PostgreSQL?