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 少一次数据库交互,工业系统海量数据入库必用。

相关推荐
OceanWaves19934 小时前
mysql 8.0.32 磁盘爆满,清理从库日志
数据库·mysql
凤山老林4 小时前
数据库读写分离与动态路由实战:Spring Boot + ShardingSphere-JDBC 生产配置
数据库·spring boot·后端·分库分表·sharding-jdbc
l1258655 小时前
# RAG噪声知识库治理:一致性与可信度的四层防线设计
数据库·人工智能·python·自然语言处理·langchain
聚美智数6 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert6 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
瀚高PG实验室6 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
Code额7 小时前
基于 SQLAlchemy 2.x,面向 MySQL 数据库的从入门到精通实战教程(2)
数据库·sql·mysql·adb·ai
Wang's Blog7 小时前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql
Wang's Blog7 小时前
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
数据库·笔记·postgresql
LayZhangStrive7 小时前
后端通识 - 后端开发职位接触的开发流程
数据库·prd·技术方案·库表设计·后端开发流程