oracle merge into与sqlserver merge into 比较
merge into:
在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。
Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。
不多说了,实例对比一下吧!
oracle merge into:
- /*
- drop table a;
- drop table b;
- */
- create table a (aid integer null,aname varchar2(10) null);
- create table b (bid integer null,bname varchar2(10) null);
- insert into a values(1,'aname1');
- insert into a values(3,'aname3');
- insert into a values(4,'aname4');
- insert into b values(1,'bname1');
- insert into b values(2,'bname2');
- insert into b values(3,'bname3');
- merge into a
- using b
- on (a.aid=b.bid)--必须加括号
- when matched then
- update set a.aname=b.bname where b.bid>1 --可加条件
- when not matched then
- insert values(b.bid,b.bname)
- select * from a;
- select * from b;
查看A表结果:

1. 条件id>1 不更新
2. 符合条件,更新目标表
3. 注意:目标表中,此行 aid<>bid,保留了下来
4. 目标表中不存在id=2的,插入到目标表
sqlserver2008 merge into:
- /*
- drop table a;
- drop table b;
- */
- create table a (aid int null,aname varchar(10) null);
- create table b (bid int null,bname varchar(10) null);
- insert into a values(1,'aname1');
- insert into a values(3,'aname3');
- insert into a values(4,'aname4');
- insert into b values(1,'bname1');
- insert into b values(2,'bname2');
- insert into b values(3,'bname3');
- merge into a
- using b
- on a.aid=b.bid --可不用括号
- when matched then
- update set a.aname=b.bname
- when not matched then
- insert values(b.bid,b.bname)
- when not matched by source then --在a表中无操作的记录可执行删除
- delete; --必须以分号结束
- select * from a;
- select * from b;
查看A表结果:

看,匹配的完全更新到A表!
oracle merge into 和 sqlserver 2008 merge into 的区别:
1. oracle在连接条件 on(a.aid=b.bid) 必须加括号,sqlserver 可以不用,也可以用。
2. oracle中目标表不参与的记录行只能保留,sqlserver 还可以执行删除。
3. oracle 在匹配条件中可以进一步添加更新的筛选条件,sqlserver不能增加条件约束。
4. oracle在语句结尾可加或不加分号,sqlserver 必定要在语句结束后添加分号“;”。
引用自:http://blog.csdn.net/kk185800961/article/details/8760634
oracle merge into与sqlserver merge into 比较的更多相关文章
- sqlServer MERGE 对数据进行修改或插入自动视别 特别用于批量数据的插入或修改
sqlServer MERGE 对数据进行修改或插入自动视别 特别用于批量数据的插入或修改 MERGE customer AS targetTable --目标表 USING ( ...
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
- 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布
19.设备驱动和OPC Client支持mysql.oracle.sqlite.sqlserver的持久化 19.1 概述 ServerSuperIO支持设备驱动和OPC Client采集的数 ...
- oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver
想从Oracle实时同步数据到Ms Sqlserver,需要在Oracle里面直连Sqlserver进行数据的读写,可以在Oracle服务器上安装oracle database gateway for ...
- Oracle 11g透明网关连接Sqlserver
Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术.通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Se ...
- Oracle 11g透明网关连接Sqlserver 2000(转)
Oracle 11g透明网关连接Sqlserver 2000: http://www.cnblogs.com/lightnear/archive/2013/02/03/2890858.html 透明网 ...
- Leetcode 23.Merge Two Sorted Lists Merge K Sorted Lists
Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list shoul ...
- 通过Oracle sql developer从sqlserver迁移数据到oracle
通过Oracle sql developer工具从sqlserver迁移数据到oracle 序言 一般情况下,sqlserver数据迁移到oracle,我们可以使用ODI来进行.但ODI的安装.配置. ...
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
做易买网项目,由于对数据库插入系统时间不了解,常常遇到的问题: 1.java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配.原因:由于获取系统时间类型不对,应为sy ...
随机推荐
- 长城防火墙(GFW)
一.简介 中国防火长城,官方名为金盾工程,是由政府运作的一个互联网审查监控项目.在其管辖互联网内部建立的多套网络审查系统的总称,包括相关行政审查系统.其英文名称Great Firewall of Ch ...
- Be a Smart Raftsman SGU475
传送门 题目大意 有m+1个点,0是起点,m是终点,i-1到i有一条边,有一个船由0驶往m,不能返回,它在载重小于等于ci时通过第i条边消耗的时间为di否则为Di,现在有n个人,每个人体重为wi,上船 ...
- post请求时,出现relationship name error
原因:在post请求,其属性名在代码中已经修改为partyLocationDtos,但是在swagger中,仍然为partyLocations. 因此,报错.记住,在post请求的时候,要一一对应.写 ...
- HTML5应用程序缓存Application Cache详解.RP
什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...
- idea中解决Error:java: Compilation failed: internal java compiler error的问题
项目中,使用gradle做项目构建,当我们想更改JDK的版本时,报以下错误: Information:Using javac 1.8.0_111 to compile java sourcesInfo ...
- @RequestMapping与@ModelAttribute 套路
新接触一个项目,使用了大量注解: 在通过请求路径查看时一直找不到页面的跳转,再查看了文件内所有方法与注解后才找到对应的路径,特此记下: @ModelAttribute("totalfinal ...
- vue2.x学习笔记
1.使用模板template的时候必须要有跟节点,可以支持表达式,但不支持正则,想使用正则就用过滤器. 2.数据在显示的时候所带的HTML DOM直接显示,不会渲染,要渲染DOM,得用v-html. ...
- C#封装的VSTO Excel操作类
自己在用的Excel操作类,因为经常在工作中要操作Excel文件,可是使用vba实现起来实在是不方便,而且编写也很困难,拼接一个字符串都看的眼花. 这个时候C#出现了,发现使用C#来操作Excel非常 ...
- CSS3 -- FlexBox(弹性盒子)
盒子模型 CSS中有一种基础设计模式叫盒模型,盒模型定义了Web页面中的元素如何来解析. 在盒模型中主要包括width.height.border.background.padding和margin这 ...
- Percona5.6源码安装
---恢复内容开始--- 系统环境:CentOS 6.8 1.安装依赖包 yum install gcc-c++ make cmake bison bison-devel ncurses-devel ...