sql >> Database >  >> RDS >> Oracle

SQL-syntaxis voor updatequery met connect by prior

De hiërarchische query werkt alleen met SELECT. Het werkt niet met UPDATE (ik ben het ermee eens dat het netjes zou kunnen zijn als dat wel het geval was).

Dus wat je kunt doen is dit:

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

Let op de volgorde van de kolommen connect by prior ID = PARENT_ID . Normaal gesproken willen we vanaf de START WITH-rij naar beneden lopen, wat ik ook heb gedaan. Uw bestelling connect by prior PARENT_ID = ID loopt de boom op van 12345 naar zijn ouders, grootouders, enz. Als je dat wilt, schakel je de connect by clausule terug.



  1. MySQL:alle kolommen in een tabel selecteren plus één kolom uit dezelfde tabel

  2. Wat zijn equivalente C#-gegevenstypen voor de datum, tijd en datetimeoffset van SQL Server?

  3. Totaal over herhalende groep op items op basis van tijd in Oracle SQL

  4. Hoe bespot je MySQL (zonder ORM) in Node.js?