Kromě vysvětlení od @zaratustra se vaše sloučení také pokouší nastavit fn
a ln
na stejné name
hodnotu, takže by to nepřineslo požadovaný výsledek, i když by to fungovalo. A nemůžete použít fn
nebo ln
v using
klauzule, když se je pokoušíte aktualizovat.
Pokud váš name_test
tabulka měla sloupec primárního klíče (nebo alespoň jedinečný), pak byste jej mohli zahrnout do sloučení, ale stále byste byli schopni správně aktualizovat buď fn
nebo ln
hodnotu v jednom průchodu.
Nejsem si jistý, proč neprovádíte jednoduchou aktualizaci:
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