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

Cập nhật nhiều cột trong câu lệnh MERGE ORACLE

Tôi không nghĩ bạn cần vòng lặp. Tôi giả sử id của bạn là khóa chính và bạn không có ý định lặp lại crank nhiều lần trong ví dụ của mình.

Cái gì đó như thế này có hoạt động không?

Chỉnh sửa theo bình luận của Raj A. Thao tác này sẽ chỉ cập nhật các hàng mà một trong các trường khác đã thay đổi. Lưu ý rằng điều này sẽ không cập nhật các hàng trong đó một hàng là NULL và hàng kia không phải là NULL.

MERGE INTO final T 
USING ( SELECT id, score, crank, urank FROM test ) S
   ON ( S.vid = T.id AND 
        ( S.crank != T.crank OR S.score != T.score OR S.urank != T.urank ))
 WHEN MATCHED SET crank = S.crank, score = S.score, 
      crank = S.crank, urank = S.urank 
 WHEN NOT MATCHED THEN INSERT
      [... not sure what you want to do in this case ...]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java:Đọc Blob từ Oracle

  2. Làm cách nào để đặt đúng biến ORACLE_HOME trên Ubuntu 9.x?

  3. tính toán giờ dựa trên giờ làm việc trong Oracle SQL

  4. PL / SQL, làm thế nào để thoát khỏi dấu nháy đơn trong một chuỗi?

  5. Tính toán chi phí trung bình của khoảng không quảng cáo trong SQL