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
相关推荐
小白教程22 分钟前
Python连接MySQL数据库图文教程,Python连接数据库MySQL入门教程
数据库·python·mysql·python链接数据库·python链接mysql
hzulwy25 分钟前
mongodb的并发优化
数据库
new出对象1 小时前
数据库增删查改sql语句
数据库·sql·oracle
m0_748246611 小时前
超详细:数据库的基本架构
数据库·架构
Themberfue1 小时前
SQL ①-数据库 || MySQL
数据库·sql·mysql·数据库系统·数据库管理系统
Good Note1 小时前
Golang的静态强类型、编译型、并发型
java·数据库·redis·后端·mysql·面试·golang
RisingWave中文开源社区2 小时前
一文详解物化视图(MV):定义、优势和用例
数据库·sql·数据分析
PingCAP2 小时前
TiDB Chat2Query 深度解析:我们如何打造一款更高效、准确的智能 SQL 生成工具?
数据库
想做富婆3 小时前
数仓搭建实操(传统数仓oracle):[构建数仓层次|ODS贴源层]
数据库·oracle·数仓
威哥爱编程3 小时前
如何解决 MySQL 数据库服务器 CPU 飙升的情况
数据库·mysql