oracle中merge into的使用

功能描述

通过MERGE INTO语句,将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,无法匹配时对目标表执行INSERT。

此语法可以很方便地用来合并执行UPDATE和INSERT,避免多次执行。

进行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。

示例:

sql 复制代码
--测试表1
DROP TABLE test;
create table test
(
id int NOT NULL,
name varchar2(50) DEFAULT NULL ,
CONSTRAINT "pk_id2" PRIMARY KEY (id)
) ;
insert into test
select '1','one' FROM dual
 union all 
select '2','two' FROM dual
 union all 
select '3','three' FROM dual

SELECT * FROM test;
ID	NAME
1	one
2	two
3	three

--测试表2
drop TABLE test2;
create table test2 
(
id int NOT NULL,
name varchar2(50) DEFAULT NULL ,
CONSTRAINT "pk_id" PRIMARY KEY (id)
) ;

insert into test2
select '1','oneone' FROM dual
 union all 
select '4','four' FROM dual


SELECT * FROM test2;
1	oneone
4	four

--merge into 语法

merge into test t1
using test2 t2
on (t1.id = t2.id)
WHEN MATCHED THEN  
	update set t1.name = t2.name 
WHEN NOT MATCHED THEN  
	insert values (t2.id, t2.name);

Updated ROWS 2

SELECT * FROM  test;
ID	NAME
1	oneone
2	two
3	three
4	four
相关推荐
数据知道2 小时前
PostgreSQL性能优化:内存配置优化(shared_buffers与work_mem的黄金比例)
数据库·postgresql·性能优化
静听山水2 小时前
Redis核心数据结构
数据结构·数据库·redis
流㶡2 小时前
MySQL 常用操作指南(Shell 环境)
数据库
数据知道3 小时前
PostgreSQL 性能优化:连接数过多的原因分析与连接池方案
数据库·postgresql·性能优化
怣503 小时前
MySQL子查询实战指南:数据操作(增删改查)与通用表达式
数据库·chrome·mysql
刘一说3 小时前
Java 中实现多租户架构:数据隔离策略与实践指南
java·oracle·架构
范纹杉想快点毕业3 小时前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
数据知道3 小时前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟3 小时前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构
tryCbest3 小时前
Oracle查看存储过程
数据库·oracle