星空网 > 软件开发 > 数据库

SQLServer之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 语句最后必须包含分号,以 ; 结束。

 




原标题:SQLServer之merge函数用法

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

德国快递集体感染,德国出台快递新政:https://www.goluckyvip.com/news/2927.html
Wish A+物流计划禁运品、揽收服务商及联系方式等信息详细介绍:https://www.goluckyvip.com/news/2928.html
亚马逊法国仓库本周二复工 30%员工重返岗位:https://www.goluckyvip.com/news/2929.html
Shopee Q3 战绩赶超 Lazada,将成为越南电商龙头老大?:https://www.goluckyvip.com/news/293.html
跨境叔教你成为Shopee大卖家!:https://www.goluckyvip.com/news/2930.html
跨境电商自建站物流经验分享:https://www.goluckyvip.com/news/2931.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流