sql >> Databáze >  >> RDS >> Oracle

Syntaxe SQL pro aktualizační dotaz s připojením předchozím

Hierarchický dotaz funguje pouze s SELECT. Nefunguje to s UPDATE (souhlasím, že by to mohlo být pěkné, kdyby to fungovalo).

Takže můžete udělat toto:

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);

Všimněte si pořadí sloupců connect by prior ID = PARENT_ID . Normálně chceme sejít po stromě z řady ZAČÍT S, což jsem udělal. Vaše objednávka se connect by prior PARENT_ID = ID chodí po stromě z 12345 ke svým rodičům, prarodičům atd. Pokud to chcete, přepněte connect by doložka zpět.



  1. Jak mohu vrátit výstup kontingenční tabulky v MySQL?

  2. Smazat záznamy v rámci spouštěče namísto smazání

  3. BigQuery/SQL – Rozdělit hodnotu na konkrétní varianty

  4. Kdy použít hodnoty oddělené čárkami ve sloupci DB?