zoukankan      html  css  js  c++  java
  • 合并数据

    SQL Server 2008 引入了一个称为MERGE 的语句,它能在一条语句中根据逻辑条件对数据进行不同的修改操作(INSERT、UPDATE和DELETE)。MERGE语句是SQL 标准的一部分,而T-SQL版本的MERGE语句也增加了一些非标准的扩展。

    因为MERGE语句是新增的,所以必须使用SQL Server 2008。

    使用MERGE语句的好处是:用较少的代码就可以表达需求,提高查询性能,因为它可以更少地访问查询涉及表。

    MERGE INTO dbo.Customers AS TGT

    USING dbo.CustomersStage AS SRC

      ON TGT.custid=SRC.custid

    WHEN MATCHED THEN

      UPDATE SET

        TGT.companyname=SRC.companyname,

        TGT.phone=SRC.address,

        TGT.address=SRC.address

    WHEN NOT MATCHED THEN

      INSERT (custid,companyname,phone,address)

      VALuES( SRC.custid,SRC.companyname,SRC.phone,SRC.address);

    注意:MERGE 语句必须以分号结束,而对于T-SQL中的大多数其他语句来说,以分号结束语句是可选的。但是,如果遵循最佳实践,用分号结束所有语句,这也并不会带来什么麻烦。

    当存在匹配时,该MERGE 语句定义了一个UPDATE 操作,将目标表的companyname、phone及address设置为来源表中相应行的同名列值。注意,此处UPDATE操作的语法和普通的UPDATE语句很类似,只是不须要再提供更新操作的目标表,因为在MERGE子句中已经定义好了目标表。

    当不存在匹配时,该MERGE语句定义了一个INSERT操作,将来源表中的数据行插入目标表。同样,此处INSERT操作的语法和普通的INSERT语句很类似,只是不须要再提供插入操作的目标表,因为在MERGE子句中已经定义好了目标表。

    T-SQL 还支持第3种子句WHEN NOT MATCHED BY SOURCE,它用于定义对于目标表的一个行,在来源表中没有与之匹配的行时应该采取的操作。

  • 相关阅读:
    xcode debug
    ios 使用Quartz 2D画虚线
    ios UIGestureRecognizer
    ios 实现带矩形框的屏幕截图
    ios UISegemetedControl
    centos最小安装之后无法使用ifconfig
    无线LoRa智能远传水表
    智能水表188协议汇总
    无线LoRa远传智能水表
    静电除尘器除尘原理
  • 原文地址:https://www.cnblogs.com/zhangdx/p/3758118.html
Copyright © 2011-2022 走看看