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

Câu lệnh cập nhật Oracle với một phép nối bên trong

Trong Oracle, bạn không thể sử dụng from mệnh đề trong cập nhật tuyên bố theo cách đó. Bất kỳ điều nào sau đây sẽ hoạt động.

UPDATE d
SET    d.user_id   =
          (SELECT c.user_id
           FROM   c
           WHERE  d.mgr_cd = c.mgr_cd)
WHERE  d.user_id IS NULL;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
        FROM   d INNER JOIN c ON d.mgr_cd = c.mgr_cd
        WHERE  d.user_id IS NULL)
SET    d_user_id   = c_user_id;

UPDATE (SELECT d.user_id AS d_user_id, c.user_id AS c_user_id
        FROM   d INNER JOIN c ON d.mgr_cd = c.mgr_cd)
SET    d_user_id   = c_user_id
WHERE  d_user_id IS NULL;

Tuy nhiên, sở thích của tôi là sử dụng MERGE trong trường hợp này:

MERGE INTO d
USING      c
ON         (d.mgr_cd = c.mgr_cd)
WHEN MATCHED THEN
    UPDATE SET d.user_id = c.user_id
        WHERE      d.user_id IS NULL;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ScaleGrid thêm Đám mây Oracle cho Lưu trữ Cơ sở dữ liệu Được Quản lý

  2. Sao chép một hàng trong cùng một bảng mà không cần phải nhập hơn 50 tên cột (trong khi thay đổi 2 cột)

  3. Cách lấy danh sách tất cả các thủ tục bên trong một gói oracle

  4. Oracle SQ Xác định Anh chị em qua anh chị em ruột

  5. Chỉ cho phép 3 hàng được thêm vào bảng cho một giá trị cụ thể