码迷,mamicode.com
首页 > 其他好文 > 详细

合并数据

时间:2014-05-29 22:54:21      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:c   a   int   com   使用   数据   

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,它用于定义对于目标表的一个行,在来源表中没有与之匹配的行时应该采取的操作。

合并数据,布布扣,bubuko.com

合并数据

标签:c   a   int   com   使用   数据   

原文地址:http://www.cnblogs.com/zhangdx/p/3758118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!