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