Selain penjelasan dari @zaratustra, penggabungan Anda juga mencoba mengatur fn
dan ln
dengan name
yang sama nilai sehingga tidak akan memberikan hasil yang Anda inginkan bahkan itu berhasil. Dan Anda tidak dapat menggunakan fn
atau ln
dalam using
klausa saat Anda mencoba memperbaruinya.
Jika name_test
. Anda tabel memiliki kolom kunci utama (atau setidaknya unik) maka Anda dapat memasukkannya ke dalam gabungan, tetapi Anda masih hanya dapat memperbarui fn
dengan benar atau ln
nilai dalam satu pass.
Saya tidak yakin mengapa Anda tidak melakukan pembaruan sederhana:
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