• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL中Merge用法详解

    MERGE语句是SQL语句的一种。在SQL Server、Oracle数据库中可用,MySQL、PostgreSQL中不可用。MERGE是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表(原数据表,source table)或子查询的连接条件对另外一张(目标表,target table)表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

    merge主要用于两表之间的关联操作

    oracle中 merge:

    从oracle 9i开始支持merge用法,10g有了完善

    create table a (id_ integer,count_ integer);
    insert into a values(1,3);
    insert into a values(3,6);
    create table b (id_ integer,count_ integer);
    insert into b values(1,7);
    insert into b values(2,4);
    MERGE INTO a
     USING b
     ON (a.id_ = b.id_)
    WHEN MATCHED THEN
     UPDATE SET count_ = b.count_+a.count_ /* 注意指名count_属于的表 */
    WHEN NOT MATCHED THEN
     INSERT VALUES (b.id_,b.count_);
    commit;
    select * from a;

    结果:

        id_   count_
        1        10
        3          6
        2          4

    SQL Server 2008开始支持merge:

    有两张结构一致的表:test1,test2

    create table test1 
    (id int,name varchar(20)) 
    go 
    create table test2 
    (id int,name varchar(20)) 
    go 
    insert into test1(id,name) 
    values(1,'boyi55'),(2,'51cto'),(3,'bbs'),(4,'fengjicai'),(5,'alis') 
    insert into test2(id,name) 
    values(1,'boyi'),(2,'51cto')

    将test1同步到test2中,没有的数据进行插入,已有数据进行更新

    merge test2 t --要更新的目标表 
    using test1 s --源表 
    on t.id=s.id --更新条件(即主键) 
    when matched --如果主键匹配,更新 
    then update set t.name=s.name 
    when not matched then insert values(id,name);--目标主未知主键,插入。此语句必须以分号结束

    运行以下查询查看更新结果

    select a.id,a.name as name_1,b.name as name_2 from test1 as a,test2 as b 
    where a.id=b.id

    id          name_1               name_2
    ----------- -------------------- --------------------
    1           boyi55               boyi55
    2           51cto                51cto
    3           bbs                  bbs
    4           fengjicai            fengjicai
    5           alis                 alis

    您可能感兴趣的文章:
    • SQLServer 2008 Merge语句的OUTPUT功能
    • SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题
    • SQLServer2008的实用小道具 merger使用介绍
    • SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)
    上一篇:详解sqlserver查询表索引
    下一篇:SQL SERVER数据库表记录只保留N天图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL中Merge用法详解 SQL,中,Merge,用法,详解,SQL,