Ud over forklaringen fra @zaratustra forsøger din fletning også at indstille fn og ln til det samme name værdi, så det ville ikke give det resultat, du ønsker, selvom det virkede. Og du kan ikke bruge fn eller ln i using klausul, mens du forsøger at opdatere dem.
Hvis din name_test tabellen havde en primær nøgle (eller i det mindste unik) kolonne, så kunne du inkludere det i sammenfletningen, men du ville stadig kun være i stand til at opdatere enten fn korrekt. eller ln værdi i én omgang.
Jeg er ikke sikker på, hvorfor du ikke laver en simpel opdatering:
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