Oracle中Merge Using用法

MERGE INTO 是 Oracle 独有的 DML (数据操纵语言) 语法,也叫**「合并更新 / 插入语句」,是 Oracle 最强大的语法之一,专门解决 「单条 SQL 完成 插入 + 更新 两个操作」**的业务需求,替代了传统的 先SELECT判断 → 再INSERT/UPDATE 这种低效且有并发风险的写法。

复制代码
MERGE INTO 目标表 目标表别名
USING 数据源 数据源别名
ON (匹配条件)
-- 匹配成功时执行【更新】,可写多个字段更新
WHEN MATCHED THEN 
    UPDATE SET 目标表别名.字段1=数据源别名.字段1, 目标表别名.字段2=数据源别名.字段2 [WHERE 更新过滤条件]
-- 匹配失败时执行【插入】,字段和值一一对应
WHEN NOT MATCHED THEN 
    INSERT (目标表字段1, 目标表字段2, ...) VALUES (数据源别名.字段1, 数据源别名.字段2, ...) [WHERE 插入过滤条件];

1.MERGE INTO 是整体关键字,必须和 USING 成对出现,缺一不可;

2.ON(匹配条件) 是核心判断依据,决定了走「更新」还是「插入」;

3.WHEN MATCHED 和 WHEN NOT MATCHED 分支至少写一个,也可以两个都写(你的业务就是两个都写,最常用);

4.两个分支是互斥的:永远只会执行其中一个,不会同时触发;

5.执行效率极高:一次 SQL 请求完成两个逻辑,比 SELECT+INSERT/UPDATE 少一次数据库交互,工业系统海量数据入库必用。

相关推荐
wefg15 分钟前
【MySQL】事务
数据库·mysql
黑白极客13 分钟前
mysql的高可用性
数据库·mysql
一十九的酒26 分钟前
Oracle 12c 标准版无缝升级企业版实战记录
数据库·oracle·标准版切换到企业版
ZhengEnCi40 分钟前
S02-SpringBoot实体类新增字段对已有数据的影响及自动DDL同步机制详解
数据库·spring boot
妙码生花1 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(三十二):增加 admin_rule 模型及数据表迁移
数据库·go·ai编程
千维百策6662 小时前
SRE 中如何消除琐务:提升工程效率与服务可靠性的实践方法
数据库
卓怡学长2 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea
名不经传的养虾人3 小时前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai
程序员佳佳3 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
绩隐金3 小时前
用AI开了本小说 九折归潮
数据库