sql >> Database teknologi >  >> RDS >> Oracle

SQL-syntaks for opdateringsforespørgsel med connect by prior

Den hierarkiske forespørgsel virker kun med SELECT. Det virker ikke med UPDATE (jeg er enig i, at det kunne være pænt, hvis det gjorde).

Så hvad du kan gøre er dette:

update HTABLE 
set status = 'INACTIVE'
WHERE STATUS <> 'CLOSE'
and id in ( select c.id
            from htable
            connect by prior ID = PARENT_ID 
            start with PARENT_ID = 12345);

Bemærk rækkefølgen af ​​kolonner connect by prior ID = PARENT_ID . Normalt vil vi gerne gå ned af træet fra START MED rækken, hvilket er hvad jeg har gjort. Din bestilling connect by prior PARENT_ID = ID går op i træet fra 12345 til dets forældre, bedsteforældre osv. Hvis det er det du vil, skal du skifte connect by klausul tilbage.



  1. Tilføj en genereret kolonne til en tabel i SQLite

  2. MediaWiki DB-forbindelsesfejl under forsøg på at opgradere til 1.22

  3. Hvordan bruger man .format()-strengen i en MySQL-sætning?

  4. MySQL – Hvordan dropper man tabel, hvis den findes i databasen?