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

Oracle sql MERGE INTO với một mệnh đề where

Đối với ví dụ này, vấn đề của bạn chắc chắn là ở truy vấn con USING. Truy vấn này tạo ra nhiều giá trị của table2.column1 :

SELECT DISTINCT table2.column1, 
        view1.column2
 FROM SCHEMA2.TABLE_2 table2
 LEFT JOIN SCHEMA2.VIEW_1 view1
 ON table2.column2 = view1.column3

Vì vậy, mệnh đề ON sẽ khớp với (các) hàng giống nhau trong table1 nhiều lần:

ON (table1.column3 = t2.column1 )

Oracle không thể tìm ra giá trị nào của t2.column2 nên được sử dụng trong CẬP NHẬT, vì vậy nó ném ORA-30926 .

Sử dụng khác biệt trong truy vấn con không hữu ích vì điều đó tạo ra hoán vị của tất cả các cột. Bạn cần viết một truy vấn con sẽ tạo ra các giá trị duy nhất của t2.column1 trên tất cả các hàng hoặc thêm (các) cột nhận dạng khác để tạo khóa duy nhất mà bạn có thể tham gia vào table1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khung thực thể 6 và oracle

  2. IF EXISTS điều kiện không hoạt động với PLSQL

  3. Thay đổi ngày hết hạn mật khẩu người dùng Oracle

  4. Tham số ràng buộc với SQL động Oracle

  5. Làm thế nào chúng ta có thể phát hiện ra rằng một cột trong bảng oracle của tôi đang được điền / cập nhật bởi một trình kích hoạt của một bảng khác?