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

Er det muligt at lave en rekursiv SQL-forespørgsel?

Her er et eksempel på et script, der bruger almindeligt tabeludtryk:

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

Scriptet ovenfor opretter en 'virtuel' tabel kaldet sumthis der har kolonner id og val . Det er defineret som resultatet af to valg sammenlagt med union all .

Først select henter roden (where id = :selectedid ).

Andet select følger børnene af de tidligere resultater iterativt, indtil der ikke er noget at returnere.

Slutresultatet kan derefter behandles som en normal tabel. I dette tilfælde summeres værdikolonnen.



  1. Hvad er den hurtigste måde at afkorte tidsstempler til 5 minutter i Postgres?

  2. hent tabelnavn fra en kolonne for fra-klausul

  3. Betyder rækkefølgen af ​​tabeller i en joinforbindelse, når LEFT (ydre) joins bruges?

  4. Sådan opretter du sammensat primær nøgle i MySQL