Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。

MERGE 目标表

USING 源表

ON 匹配条件

WHEN MATCHED THEN

语句

WHEN NOT MATCHED THEN

语句;

其中最后语句分号不可以省略,且源表既可以是一个表也可以是一个子查询语句

WHEN NOT MATCHED BY TARGET

表示目标表不匹配,BY TARGET是默认的,所以上面我们直接使用WHEN NOT MATCHED THEN

WHEN NOT MATCHED BY SOURCE

表示源表不匹配,即目标表中存在,源表中不存在的情况。

示      例:

merge into device d
using deviceTmp t on d.id=t.id
when matched and d.isDeleted=0
then update set d.deviceName=t.deviceName,d.updateTime=getDate()
when not matched
then insert (id,isdeleted,updateTime,account,catagoryId,cid,devid,deviceName)
values(t.id,0,getDate(),t.account,t.catagoryId,t.cid,t.devid,t.deviceName);

最新文章

  1. senlin __init__() got an unexpected keyword argument 'additional_headers'
  2. 【网络】VPN和代理服务器的区别
  3. Python中format的用法
  4. 线程高级应用-心得7-java5线程并发库中阻塞队列Condition的应用及案例分析
  5. python--切片--6
  6. 将HTML段赋值给PHP变量的便捷方法,不使用转义字符
  7. js判断小数点几位
  8. wordpress plugins collection
  9. MongoDB:The Definitive Guide CHAPTER 2 Getting Started
  10. 在.NET中使用iTextSharp创建/读取PDF报告: Part I [翻译]
  11. C#由变量捕获引起对闭包
  12. 【设计优化】-使用缓冲(Buffer)提高程序性能
  13. shiyandaima
  14. 浩哥解析MyBatis源码(六)——DataSource数据源模块之池型数据源
  15. intellij idea maven 工程生成可执行的jar
  16. linux驱动---用I/O命令访问PCI总线设备配置空间
  17. goroutine和线程区别
  18. Github上如何查看当前最流行的开源项目
  19. python转义符
  20. python爬虫---requests库的用法

热门文章

  1. 《DOM编程艺术》读书笔记<概述>
  2. 集合Gk表示这样一堆数字,该集合内的数字有k个1
  3. Linux系统结构 详解(转)
  4. 第一课、安装登录CentOS7
  5. window.moveTo(),window.moveBy()不生效
  6. vue调用豆瓣API加载图片403问题
  7. bootstrap-paginator分页插件的简单使用实例
  8. PHP中$a && $b = $c 语法的用法
  9. laravel-admin 创建数据库并生成控制器
  10. QWT编译与配置-Windows/Linux环境