Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cú pháp SQL cho truy vấn cập nhật với kết nối bởi trước

Truy vấn phân cấp chỉ hoạt động với SELECT. Nó không hoạt động với UPDATE (Tôi đồng ý rằng nó có thể gọn gàng nếu nó xảy ra).

Vì vậy, những gì bạn có thể làm là:

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

Lưu ý thứ tự của các cột connect by prior ID = PARENT_ID trước . Thông thường, chúng tôi muốn đi bộ xuống cây từ hàng BẮT ĐẦU VỚI, đó là những gì tôi đã làm. Đặt hàng của bạn connect by prior PARENT_ID = ID trước đi lên cái cây từ 12345 đến cha mẹ, ông bà của nó, v.v. Nếu đó là điều bạn muốn, hãy chuyển connect by mệnh đề trở lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA Không có hoặc không có khóa chính gặp phải trong đơn vị bản sao công việc

  2. Làm cách nào để đếm số từ trong một chuỗi trong Oracle?

  3. Tìm kiếm các giá trị NULL cho các loại Oracle khác nhau

  4. Làm thế nào để lấy các cột khác không có trong mệnh đề GROUP BY trong sql select oracle?

  5. Liên kết biến với tên bảng bằng cx_Oracle