Naast de uitleg van @zaratustra, probeert je samenvoeging ook de fn in te stellen en ln naar dezelfde name waarde, zodat het niet het gewenste resultaat zou geven, zelfs als het werkte. En je kunt fn . niet gebruiken of ln in de using clausule terwijl u ze probeert bij te werken.
Als uw name_test tabel een primaire sleutel (of op zijn minst unieke) kolom had, dan zou je die in de samenvoeging kunnen opnemen, maar je zou nog steeds alleen de fn correct kunnen bijwerken of ln waarde in één keer.
Ik weet niet zeker waarom je geen simpele update doet:
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