Zusätzlich zu der Erklärung von @zaratustra versucht Ihr Merge auch, den fn
zu setzen und ln
auf denselben name
Wert, so dass es nicht das gewünschte Ergebnis liefern würde, selbst wenn es funktioniert hat. Und Sie können fn
nicht verwenden oder ln
im using
-Klausel, während Sie versuchen, sie zu aktualisieren.
Wenn Ihr name_test
Tabelle eine Primärschlüsselspalte (oder zumindest eine eindeutige) hatte, dann könnten Sie diese in die Zusammenführung einbeziehen, aber Sie könnten immer noch nur entweder den fn
korrekt aktualisieren oder ln
Wert in einem Durchgang.
Ich bin mir nicht sicher, warum Sie kein einfaches Update durchführen:
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