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