Ngoài lời giải thích từ @zaratustra, hợp nhất của bạn cũng đang cố gắng đặt fn
và ln
đến cùng một name
giá trị để nó sẽ không cung cấp kết quả bạn muốn ngay cả khi nó hoạt động. Và bạn không thể sử dụng fn
hoặc ln
trong using
khi bạn đang cố gắng cập nhật chúng.
Nếu name_test
của bạn bảng có khóa chính (hoặc ít nhất là duy nhất) thì bạn có thể đưa cột đó vào hợp nhất, nhưng bạn vẫn chỉ có thể cập nhật chính xác cột fn
hoặc ln
giá trị trong một lần vượt qua.
Tôi không chắc tại sao bạn không cập nhật đơn giản:
update name_test nt
set fn = (select td.name from temp_distinct td where td.fn = nt.fn),
ln = (select td.name from temp_distinct td where td.fn = nt.ln);
8 rows updated.
select * from name_test;
FN LN
----- -----
Mich Steve
Mich Phil
Mark Dave
Mich Phil
Mich Dave
Phil John
Steve Dean
Steve Phil