没有合适的资源?快使用搜索试试~ 我知道了~
SQLServer中merge函数用法详解
5星 · 超过95%的资源 2 下载量 159 浏览量
2020-09-10
05:47:20
上传
评论
收藏 60KB PDF 举报
温馨提示
试读
2页
Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。通过本篇文章给大家介绍sqlserver中merge函数用法详解,感兴趣的朋友一起学习吧
资源推荐
资源详情
资源评论
SQLServer中中merge函数用法详解函数用法详解
Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为
一句。通过本篇文章给大家介绍sqlserver中merge函数用法详解,感兴趣的朋友一起学习吧
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无法多次更新同一行,也无法更新和删除同一行
当源表和目标表不匹配时:若数据是源表有目标表没有,则进行插入操作若数据是源表没有而目标表有,则进行更新或者删除
数据操作当源表和目标表匹配时:进行更新操作或者删除操作when matched 这个子句可以有两个,当有两个时,第一个子句
必须是when matched and condition且两个matched子句只会执行一个,且两个子句必须是一个update和一个delete操作when
not matched by source和上面类似
merge icr_codemap_bak as a
using icr_codemap as b
on a.COLNAME = b.COLNAME and a.ctcode = b.ctcode
when matched and b.pbcode <> a.pbcode
then update set a.pbcode = b.pbcode
when not matched
then insert values(b.colname,b.ctcode,b.pbcode,b.note)
;
可以比对字段不一致进行更新
https://technet.microsoft.com/zh-cn/library/bb510625.aspx 这个是MSDN的网址
在 Merge Matched 操作中,只能允许执行 UPDATE 或者 DELETE 语句。
在 Merge Not Matched 操作中,只允许执行 INSERT 语句。
一个 Merge 语句中出现的 Matched 操作,只能出现一次 UPDATE 或者 DELETE 语句,否则就会出现下面的错误 - An action
of type 'WHEN MATCHED' cannot appear more than once in a 'UPDATE' clause of a MERGE statement.
Merge 语句最后必须包含分号,以 ; 结束。
ps:SQL Server中Merge-using的用法
在执行之前:
weixin_38507121
- 粉丝: 10
- 资源: 929
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页