Đố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
.