Merge into 存在就更新数据,不存在就插入数据。

MERGE INTO A
USING B
ON ( A.tiaoma=B.tiaoma )-- A表和B表进行条件关联
WHEN MATCHED THEN --如果存在则执行更新操作
    UPDATE SET A.num= B.num
WHEN NOT MATCHED THEN --如果不存在则执行插入操作。
    INSERT(num)  VALUES(B.num);

注意:B表内数据不能有重复的数据。

否则将出现 ORA-30926: 无法在源表中获得一组稳定的行错误。

merge into的内部处理是将 A表 的每一条记录和B表 的每一条记录对比匹配,匹配到符合条件的记录就会进行修改,匹配不到的话就会insert。如果A表 的匹配列中有重复值的话,等到第二次重复的列值匹配的时候,就会将第一次的update后的值再一次update,就是说合并后的B中会丢失在A中的记录!!!如果记录丢失的话,两表合并的意义何在?!!因此我们使用merge into要注意:源表匹配列中不能有重复值,否则无法匹配(报错!     )。  

猜你喜欢

转载自762612388.iteye.com/blog/2370841
今日推荐