版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/han_xiaoxue/article/details/80281176
TABLE1
TABLE2
要根据name进行匹配,给表一(TABLE1)中的id update 成TABLE2中的id值
sql 1:
merge into TABLE1
using TABLE2
on(TABLE1.name=TABLE2.name)
when matched then
update set TABLE1.id = TABLE2.id
如果tab2中有多条对应tab1中一条的情况也会出错:ORA-30926: unable to get a stable set of rows in the source tables。可以通过在using中的subquery中将重复记录过滤来避免这种错误,merge终极版
sql 2:
merge into TABLE1
using (select * FROM TABLE2 X WHERE X.ROWID =
(SELECT MAX(Y.ROWID) FROM TABLE2 Y WHERE X.name = Y.name)) TABLE2
on(TABLE1.name=TABLE2.name)
when matched then
update set TABLE1.id = TABLE2.id
结果