SQL~两个表,根据一个字段给对应的另一个字段update值

版权声明:本文为博主原创文章,未经博主允许不得转载。 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  

结果
这里写图片描述

猜你喜欢

转载自blog.csdn.net/han_xiaoxue/article/details/80281176