Oracle中merge into的使用
来源:互联网 发布:个人淘宝补单 编辑:程序博客网 时间:2024/06/09 19:53
我们操作数据库的时候,有时候会遇到insertOrUpdate这种需求。
如果数据库中存在数据就update,如果不存在就insert。
以前的时候,需要额外select查询一下,如果有数据就update,如果没有数据就insert。
而现在Orcale数据库都提供了 MERGE 方法来处理这种需求。
MERGE 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。
MERGE 语法:
MERGE INTO [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 MATHED THEN [here you can execute some update sql or something else ] WHEN NOT MATHED 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 T1USING (SELECT '2' as A FROM dual) T2 on (T1.ID=T2.ID)WHEN MATCHED THEN UPDATE SET T1.NAME='newtest2'WHEN NOT MATCHED THEN INSERT (T1.ID, T1.NAME) VALUES ('1', 'newtest2');
如果ID为2的数据存在那么 UPDATE,如果不存在INSERT
注意事项:
Merge Into的原理是,从using 搜出来的结果逐条与on条件匹配,然后决定是update还是Insert。 当USING后面的sql没有查询到数据的时候,Merge Into语句是不会执行update和Insert操作的。
所以要想让Merge Into正常运行,要保证USING 后面的SELECT有数据,个人喜欢使用DUAL表作为USING后的表,方便自己控制。
0 0
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- oracle 中 merge into 的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle 中 merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- Oracle中merge into的使用
- 安装 RabbitMQ (WINDOWS)
- P3P解决cookie跨域
- Webdings 图形字体
- JAVA转化Unicode编码
- 使用Data URL将图片嵌入到网页中
- Oracle中merge into的使用
- JAVA设置HttpOnly Cookies
- 设置Tomcat编码(UTF-8)
- 使用Jedis操作redis
- Tomcat 下启用 https:// 访问
- *** glibc detected *** malloc(): memory corruption
- 使用Access-Control-Allow-Origin解决跨域
- CSS颜色名称和颜色值
- 常见的HTTP 状态代码