时间:2021-07-01 10:21:17 帮助过:3人阅读
使用例子:
create table TEST (ID INTEGER,VALUE VARCHAR2(255) ); insert into TEST values (1, ‘test1‘); insert into TEST values (2, ‘test2‘);
当想插入一条数据 {ID=2,NAME=‘newtest2‘}时, 那么可以这么写
MERGE INTO TEST T1 USING (SELECT ‘2‘ as ID, ‘newtest2‘ as NAME FROM dual) T2 on (T1.ID=T2.ID) WHEN MATCHED THEN UPDATE SET T1.NAME=T2.NAME WHEN NOT MATCHED THEN INSERT (T1.ID, T1.NAME) VALUES (T2.ID, T2.NAME );
如果ID为2的数据存在那么 UPDATE,如果不存在INSERT
注意事项:
Merge Into的原理是,从using 搜出来的结果逐条与on条件匹配,然后决定是update还是Insert。 当USING后面的sql没有查询到数据的时候,Merge Into语句是不会执行update和Insert操作的。
所以要想让Merge Into正常运行,要保证USING 后面的SELECT有数据,个人喜欢使用DUAL表作为USING后的表,方便自己控制。
转自:https://www.cnblogs.com/relucent/p/4166544.html
Oracle中merge into的使用
标签:set ike blog 控制 html color and res test