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