Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL-Syntax für Update-Abfrage mit Connect by Prior

Die hierarchische Abfrage funktioniert nur mit SELECT. Es funktioniert nicht mit UPDATE (ich stimme zu, es könnte nett sein, wenn es das täte).

Sie können also Folgendes tun:

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

Beachten Sie die Reihenfolge der Spalten connect by prior ID = PARENT_ID . Normalerweise wollen wir den Baum von der Zeile START WITH nach unten gehen, was ich getan habe. Ihre Bestellung connect by prior PARENT_ID = ID geht den Stammbaum von 12345 hinauf zu seinen Eltern, Großeltern usw. Wenn Sie das möchten, schalten Sie connect by um Klausel zurück.