当前位置:Gxlcms > 数据库问题 > Oracle中merge into的使用

Oracle中merge into的使用

时间:2021-07-01 10:21:17 帮助过:3人阅读

[your table-name] [rename your table here] USING ( [write your query here] )[rename your query-sql and using just like a table] ON ([conditional expression here] AND [...]...) WHEN MATCHED THEN [here you can execute some update sql or something else ] WHEN NOT MATCHED THEN [execute something else here ! ]

 

使用例子:

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   

人气教程排行