@zaratustraからの説明に加えて、マージはfn
も設定しようとしています。 およびln
同じname
に それがうまくいったとしてもあなたが望む結果を与えないであろう価値。また、fn
は使用できません またはln
using
それらを更新しようとしているときの句。
name_test
の場合 テーブルに主キー(または少なくとも一意の)列がある場合、それをマージに含めることができますが、それでもfn
のいずれかを正しく更新することしかできません。 またはln
ワンパスでの価値。
単純な更新を行わない理由がわかりません:
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