sql >> Database >  >> RDS >> PostgreSQL

Is het mogelijk om een ​​recursieve SQL-query te maken?

Hier is een voorbeeldscript dat een algemene tabeluitdrukking gebruikt:

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

Het bovenstaande script maakt een 'virtuele' tabel met de naam sumthis met kolommen id en val . Het wordt gedefinieerd als het resultaat van twee selecties samengevoegd met union all .

Eerst select krijgt de root (where id = :selectedid ).

Tweede select volgt iteratief de kinderen van de vorige resultaten totdat er niets meer terug te vinden is.

Het eindresultaat kan dan als een normale tabel worden verwerkt. In dit geval wordt de val-kolom opgeteld.



  1. Beperkingen tijdelijk uitschakelen (MS SQL)

  2. Hoe SQLite Random() werkt

  3. Postgres SSL SYSCALL-fout:EOF gedetecteerd met python en psycopg

  4. Hoe maak ik verbinding met PostgreSQL zonder een databasenaam op te geven?