Oracle的Merge关键字

本文介绍了SQL中的Merge语句,对比了它与update+insert的效率优势,尤其是在有唯一索引的情况下。主要讲解了Merge的使用场景、格式、注意事项以及一个实际案例,展示了如何根据T1表更新T2表中的数据,或者在T2中插入新记录。
摘要由CSDN通过智能技术生成

Merge的用法

根据源表对目标表进行匹配查询,匹配成功时更新,不成功时插入
比单独的 update + insert 的方式效率要更高,尤其是on条件下有唯一索引的时候,效率更高

使用场景

存在时 - 更新,不存在时,插入

常用格式

MERGE INTO 目标表 a USING 源表 b ON (a.字段1 = b.字段2 and a.字段n = b.字段n) WHEN MATCHED THEN UPDATE SET a.新字段 = b.字段 WHERE 限制条件 WHEN NOT MATCHED THEN INSERT (a.字段名1,a.字段名n) VALUES(b.字段值1, b.字段值n) WHERE 限制条件

注意事项
  • 不能更新ON子句引用的列
  • DELETE子句的WHERE顺序必须最后
  • DELETE 子句仅仅能够删除目标表。而无法删除源表
  • 更新同一张表的数据,需操心USING的空值
  • 必需要在源表中获得一组稳定的行
    必需要在源表中获得一组稳定的行
例子

需求:从T1表更新数据到T2表中。假设T2表的NAME 在T1表中已存在,就将MONEY累加,假设不存在。将T1表的记录插入到T2表中。
MERGE INTO T2 USING T1 ON (T1.NAME=T2.NAME) WHEN MATCHED THEN UPDATE SET T2.MONEY=T1.MONEY+T2.MONEY WHEN NOT MATCHED THEN INSERT VALUES (T1.NAME,T1.MONEY)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值