sql >> Base de Datos >  >> RDS >> Oracle

Sintaxis SQL para consulta de actualización con conexión previa

La consulta jerárquica solo funciona con SELECT. No funciona con ACTUALIZAR (estoy de acuerdo en que sería genial si lo hiciera).

Entonces, lo que puedes hacer es esto:

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

Tenga en cuenta el orden de las columnas connect by prior ID = PARENT_ID . Normalmente queremos bajar por el árbol desde la fila COMENZAR CON, que es lo que he hecho. Su pedido connect by prior PARENT_ID = ID sube por el árbol desde 12345 hasta sus padres, abuelos, etc. Si eso es lo que quieres, cambia el connect by cláusula de vuelta.