首页 > 其他 > 详细

合并数据

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

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

合并数据

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!