zoukankan      html  css  js  c++  java
  • SQLServer之MERGE INTO

    简介

    会计系统的操作管理。系统分为画面系及bat系。画面系为PHP,bat系夜间调用数据库存储过程执行,使用tcpdf作成PDF帐票,CSV文件读入,写出,备份,使用PHPDOC生成文档。apache

    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。

    可以想象出,需要使用Merge的场景比如:

    •     数据同步
    •     数据转换
    •     基于源表对目标表做Insert,Update,Delete操作

    下面我们来写一个简单的Merge语句

    MERGE INTO TargetTable AS T
    USING SourceTable AS S
    ON T.id = S.id
    WHEN MATCHED                 --当上面ON后面的T.id = S.id时,目标表中匹配的数据被更新
    THEN UPDATE SET T.[filed] = S.[filed]
    WHEN NOT MATCHED             --目标表中没有的ID,在源表中有,则插入到目标表中
    THEN INSERT(filed1,filed2) VALUES(S.filed1,s.filed2)
    WHEN NOT MATCHED BY SOURCE   --目标表中有,源表中没有,则删除
    THEN DELETE;

    Merge关键字的一些限制

    •     使用Merge关键字只能更新一个表
    •     源表中不能有重复的记录

    转自:http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html

  • 相关阅读:
    dsu on tree
    bzoj3527 [Zjoi2014]力
    bzoj3527 [Zjoi2014]力
    114.遍历文件夹并批量修改文件名
    25.八皇后问题
    24.C语言最全排序方法小结(不断更新)
    112.备忘录设计模式
    110.文件搜索,系统大小获取,以及病毒行为
    109.vprintf vfprintf vscanf vfscanf
    108.sqllite3(C语言数据库库)详解
  • 原文地址:https://www.cnblogs.com/zyoohoo/p/2889348.html
Copyright © 2011-2022 走看看