位置: 编程技术 - 正文

SQLServer中merge函数用法详解(sql merge语句)

编辑:rootadmin

推荐整理分享SQLServer中merge函数用法详解(sql merge语句),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql merge函数,sql语句merge,merge sqlserver,sqlserver merge用法,sql merge join,sql merge join,sqlserver merge用法,sql merge函数,内容如对您有帮助,希望把文章链接给更多的朋友!

Merge关键字是一个神奇的DML关键字。它在SQL Server 被引入,它能将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

SQLServer中merge函数用法详解(sql merge语句)

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

主要用法:

merge无法多次更新同一行,也无法更新和删除同一行

当源表和目标表不匹配时:若数据是源表有目标表没有,则进行插入操作若数据是源表没有而目标表有,则进行更新或者删除数据操作当源表和目标表匹配时:进行更新操作或者删除操作when matched 这个子句可以有两个,当有两个时,第一个子句必须是when matched and condition且两个matched子句只会执行一个,且两个子句必须是一个update和一个delete操作when not matched by source和上面类似

merge icr_codemap_bak as ausing icr_codemap as bon a.COLNAME = b.COLNAME and a.ctcode = b.ctcodewhen matched and b.pbcode <> a.pbcodethen update set a.pbcode = b.pbcodewhen not matchedthen insert values(b.colname,b.ctcode,b.pbcode,b.note);

可以比对字段不一致进行更新

这个是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的用法

在执行之前:

执行之后

Merge和using搭配用于特别是BI上数据统计和分析上 比如 要求子表中没有的数据那么父表中就要删除对应的数据 保证子表和父表的数据对应 如果按照常规的做法是 跑个作业 然后通过游标/表值函数/临时表等等循环的获取数据然后更新父表 这样是很浪费效率的 这时Merge派上用场了。

SQLServer中Partition By及row_number 函数使用详解 partitionby关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,par

深入学习SQL Server聚合函数算法优化技巧 Sqlserver聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这

图文教程mssqlserver数据库导出到另外一个数据库的方法 下文通过图文并茂的方式给大家介绍mssqlserver数据库导出到另外一个数据库的方法,具体详情请看下文。1.准备源数据库,找到想要导出的数据库,右键

标签: sql merge语句

本文链接地址:https://www.jiuchutong.com/biancheng/312845.html 转载请保留说明!

上一篇:SQL Server使用游标处理Tempdb究极竞争-DBA问题-程序员必知(sqlyog)

下一篇:SQLServer中Partition By及row_number 函数使用详解

  • 留底退税怎么做账务处理
  • 公司代扣代缴个人所得税如何退税
  • 外国企业无偿援助的进口设备
  • 支付证明单算附件吗
  • 火车票报销抵扣税率
  • 汽车申请报废了交强险能退吗
  • 现金流量表的编制基础是什么
  • 货没出,发票先开
  • 个税专项扣除如何申报
  • 未达起征点销售额,11栏怎么填写
  • 怎么在网上申请电话卡
  • 高新技术企业分类
  • 每天现金日记账登记完以后应怎么对账
  • 个人房产房租收入怎么算
  • 增值税月末结转摘要写什么
  • 分期付款方式购物划算吗
  • 股票回购后多久注销
  • 企业所得税费用税率
  • 医疗器械技术服务合同
  • 个人承包承租经营所得采用什么税率
  • 税率变化应付账款怎么处理
  • 认缴资本 实收资本
  • 暂估冲红的分录怎么写
  • 本期已缴税额不能大于本期应纳税额
  • 销售预付款会计分录
  • MacOS bigsur11.2连击缩放窗口功能怎么关闭或开启?
  • 现金流量套期的例子
  • 子公司之间能否相互承包工程
  • 微信公众号实名认证怎么更改
  • pascl32.exe - pascl32是什么进程 有什么用
  • 直线法计提折旧每年都一样吗
  • 不良资产核销的条件 追偿180天
  • 无形资产出租怎么开具发票
  • 相关企业之间的竞争
  • 企业购入软件会计分录
  • 雪山上的老鼠
  • php数据库分页是怎么实现的
  • springboot用法
  • redis常见问题解决
  • 数据库管理系统能对数据库中的数据进行查询
  • apache 反射工具类
  • 应交增值税减免税额怎么结转
  • python字符串isdigit
  • 织梦标签理解
  • python os.path.join()函数的使用
  • 不动产销售额是否为免税
  • 建安类企业包括哪些公司
  • 合同负债算负债吗
  • 垃圾处理费怎么申报
  • 调整以前年度损益调整什么时候结转
  • 开具专票需要哪些材料
  • 内含报酬率的计算公式Npv
  • 9个点的税是多少
  • 车保险里面的车船税
  • 房屋租赁协议印花税怎么计算
  • 公司销售部门购买产品
  • 客户到我公司签字怎么说
  • MySQL Semisynchronous Replication介绍
  • sql2008开启远程连接
  • windows隐藏文件名
  • unix vi命令
  • 为什么windows删除文件很慢
  • windows字体不显示
  • RedHat 9.0下Apache+PHP+MySQL服务器安装配置
  • Win7 vpn连接不上怎么办?Win7系统vpn连接不上问题的解决方法
  • win7系统无法安装谷歌怎么办
  • linux服务端
  • win10如何不升级系统
  • linux安装.sh
  • 怎么从win8装回win7
  • win10系统怎么关闭病毒防护
  • 如何编写一个完整的教学目标
  • jquery easyui开发指南
  • 进程间的通信方
  • jquery常用的事件绑定函数有哪些
  • python列表的常用方法有哪些
  • python 技巧
  • 治理体系治理能力十九届四中
  • 开企业资信证明怎么办?需要哪些材料?
  • 个人工资所得税缴纳标准2023年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设