Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL синтаксис за заявка за актуализиране със свързване от преди

Йерархичната заявка работи само с SELECT. Не работи с UPDATE (съгласен съм, че може да е добре, ако беше).

И така, това, което можете да направите, е следното:

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

Обърнете внимание на реда на колоните connect by prior ID = PARENT_ID . Обикновено искаме да слезем по дървото от реда ЗАПОЧНЕТЕ С, което направих. Вашата поръчка connect by prior PARENT_ID = ID се изкачва по дървото от 12345 до своите родители, баби и дядовци и т.н. Ако това е, което искате, превключете connect by клауза назад.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Валидиране на дата в Oracle без използване на функция

  2. JPA - EclipseLink - Как да промените схемата по подразбиране

  3. LINQ към XYZ полиморфизъм?

  4. Грешка ORA-01804 при опит за зареждане на Oracle dbDriver

  5. Експортиране на база данни на oracle в sql файл?