merge into:
在两个表之间,根据与源表联接的结果,对目标表执行插入、更新或删除操作。
Oracle在9i引入了merge into命令,SQL Server 2008也引入merge into。

不多说了,实例对比一下吧!

oracle merge into:

  1. /*
  2. drop table a;
  3. drop table b;
  4. */
  5. create table a (aid integer null,aname varchar2(10) null);
  6. create table b (bid integer null,bname varchar2(10) null);
  7. insert into a values(1,'aname1');
  8. insert into a values(3,'aname3');
  9. insert into a values(4,'aname4');
  10. insert into b values(1,'bname1');
  11. insert into b values(2,'bname2');
  12. insert into b values(3,'bname3');
  13. merge into a
  14. using b
  15. on (a.aid=b.bid)--必须加括号
  16. when matched then
  17. update set a.aname=b.bname where b.bid>1 --可加条件
  18. when not matched then
  19. insert values(b.bid,b.bname)
  20. select * from a;
  21. select * from b;

查看A表结果:


1. 条件id>1 不更新

2. 符合条件,更新目标表

3. 注意:目标表中,此行 aid<>bid,保留了下来

4. 目标表中不存在id=2的,插入到目标表

sqlserver2008  merge into:

  1. /*
  2. drop table a;
  3. drop table b;
  4. */
  5. create table a (aid int null,aname varchar(10) null);
  6. create table b (bid int null,bname varchar(10) null);
  7. insert into a values(1,'aname1');
  8. insert into a values(3,'aname3');
  9. insert into a values(4,'aname4');
  10. insert into b values(1,'bname1');
  11. insert into b values(2,'bname2');
  12. insert into b values(3,'bname3');
  13. merge into a
  14. using b
  15. on a.aid=b.bid --可不用括号
  16. when matched then
  17. update set a.aname=b.bname
  18. when not matched then
  19. insert values(b.bid,b.bname)
  20. when not matched by source then --在a表中无操作的记录可执行删除
  21. delete; --必须以分号结束
  22. select * from a;
  23. 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 比较的更多相关文章

  1. sqlServer MERGE 对数据进行修改或插入自动视别 特别用于批量数据的插入或修改

    sqlServer MERGE   对数据进行修改或插入自动视别 特别用于批量数据的插入或修改    MERGE  customer AS targetTable   --目标表    USING ( ...

  2. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  3. 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布

    19.设备驱动和OPC Client支持mysql.oracle.sqlite.sqlserver的持久化 19.1     概述 ServerSuperIO支持设备驱动和OPC Client采集的数 ...

  4. oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver

    想从Oracle实时同步数据到Ms Sqlserver,需要在Oracle里面直连Sqlserver进行数据的读写,可以在Oracle服务器上安装oracle database gateway for ...

  5. Oracle 11g透明网关连接Sqlserver

    Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术.通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Se ...

  6. Oracle 11g透明网关连接Sqlserver 2000(转)

    Oracle 11g透明网关连接Sqlserver 2000: http://www.cnblogs.com/lightnear/archive/2013/02/03/2890858.html 透明网 ...

  7. 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 ...

  8. 通过Oracle sql developer从sqlserver迁移数据到oracle

    通过Oracle sql developer工具从sqlserver迁移数据到oracle 序言 一般情况下,sqlserver数据迁移到oracle,我们可以使用ODI来进行.但ODI的安装.配置. ...

  9. Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

    做易买网项目,由于对数据库插入系统时间不了解,常常遇到的问题: 1.java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配.原因:由于获取系统时间类型不对,应为sy ...

随机推荐

  1. 算法Sedgewick第四版-第1章基础-002一些工具类算法(Euclid’s algorithm)

    1. //Euclid’s algorithm public static int gcd(int p, int q) { if (q == 0) return p; int r = p % q; r ...

  2. Luogu 3822 [NOI2017]整数

    看懂了的大佬的题解.(这个id太巨了,找不到他的blog) 考虑直接暴力算进位均摊复杂度是对的,证明戳这里. 但是题目要求我们支持一个减操作,这就相当于返回之前操作前的结果,这对于这种均摊的复杂度的东 ...

  3. <%@ include file=""%>与<jsp:include page=""/>区别(转)

    http://www.iteye.com/topic/312500/ 我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file="&qu ...

  4. C#模拟进度条

    自己看源码 using System; namespace ConsoleTest { class Program { static void Main(string[] args) { Consol ...

  5. CentOS6.5上Zabbix3.0的RPM安装【一】-安装并配置Server

    一.Environment OS:CentOS6.5 64bit [桌面版安装] Server端:192.168.201.109 ServerName Clinet端:192.168.201.199 ...

  6. Django博客开发教程,Django快速开发个人blog

    学DjangoWEB框架,估计大部分的朋友都是从Blog开发开始入门的,Django中文网发布了一个Django开发教程,这个教程简单易懂,能让你快速的使用Django开发一个漂亮的个人blog,是D ...

  7. Python函数的冒泡排序、递归以及装饰器

    函数的冒泡排序: 本质是,让元素换位置,逐个比较最终排序. 例1:实现a1,a2值互换: a1 = 123 a2 = 456 temp = a1 a1 = a2 a2 = temp print(a1) ...

  8. tomcat跨域(亲测可用)

    首先下载cors-filter-2.5.jar(版本不要求)和java-property-utils-1.9.1 1.把这两个jar包放在tomcat的lib下. 2.在conf文件夹下找到web.x ...

  9. P1527 [国家集训队]矩阵乘法

    \(\color{#0066ff}{ 题目描述 }\) 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. \(\color{#0066ff}{输入格式}\) 第一行两个数N,Q ...

  10. msf连接PostgreSQL数据库

    一.启动PostgreSQL服务######################################################################?root@root:~# ...