Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Sintaxe SQL para consulta de atualização com conexão por anterior


A consulta hierárquica só funciona com SELECT. Não funciona com UPDATE (concordo que poderia ser legal se funcionasse).

Então o que você pode fazer é isso:
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);

Observe a ordem das colunas connect by prior ID = PARENT_ID . Normalmente queremos descer a árvore da linha START WITH, que é o que eu fiz. Seu pedido connect by prior PARENT_ID = ID anterior sobe a árvore de 12345 para seus pais, avós, etc. Se é isso que você quer, mude o connect by cláusula de volta.