博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle Merge Into 使用注意事项
阅读量:6756 次
发布时间:2019-06-26

本文共 1199 字,大约阅读时间需要 3 分钟。

我们操作数据库的时候,有时候会遇到insertOrUpdate这种需求。如果数据库中存在数据就update,如果不存在就insert。Orcale数据库都提供了 MERGE  INTO 方法来处理这种需求。

MERGE INTO 命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据。

MERGE INTO 语法:

MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) WHEN MATCHED THEN     UPDATE table_name     SET col1 = col_val1,            col2 = col_val2 WHEN NOT MATCHED THEN     INSERT (column_list) VALUES (column_values);

 在 SQL Server 的语法如下:

if exists(query sql)    update table_name SET col1 = col_val1,            col2 = col_val2,...  else     INSERT (column_list) VALUES (column_values);

  使用例子:

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 ID 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有数据

转载于:https://www.cnblogs.com/LuckyZLi/p/9758681.html

你可能感兴趣的文章
java.lang.IllegalStateException: Illegal access
查看>>
STL容器的效率比较
查看>>
Ckeditor使用总结
查看>>
人事面试100问题--巧妙应答
查看>>
【工具类】怎么进入阿里云docker仓库
查看>>
Ceres-Solver库入门
查看>>
悲惨而又丢人的创业经历:草根创业者含恨倾诉为什么失败
查看>>
理解WebKit和Chromium: WebKit, WebKit2, Chromium和Chrome介绍
查看>>
hanoi塔的递归算法
查看>>
C# 校验给定的ip地址是否合法
查看>>
lumen 登陆 注册 demo
查看>>
基于服务的并行系统的通讯方式探讨
查看>>
设计模式——观察者模式
查看>>
Python多线程 简明例子
查看>>
《地球上的星星》
查看>>
mysql数据库的主从同步,实现读写分离
查看>>
89 fcanf和fprintf
查看>>
javascript——自定义右键菜单
查看>>
求二叉树中相差最大的两个节点间的差值绝对值
查看>>
PHP 类名::class含义
查看>>