SQL> select * from t_source;
A B
--------------------------------------- ---------------------------------------
1 1
2 2
SQL> select * from t_target;
A B
--------------------------------------- ---------------------------------------
2 34
2 3999
SQL> merge into t_target using t_source on (t_source.a=t_target.a) when matched then update set t_target.b=t_source.b;
Done
SQL> select * from t_target;
A B
--------------------------------------- ---------------------------------------
2 2
2 2
SQL> commit;
Commit complete
小结:1,对于merge,目标表如果匹配列重复,但源表匹配不重复,会用源表表列新目标表的数据
2,反之,如果源表匹配列重复,此时merge就会报错,因为不知用源表哪条记录来更新目标表的数据
转自
http://blog.itpub.net/9240380/viewspace-750968/