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
相关推荐
_孤傲_6 分钟前
快速掌握 MySQL 语法
数据库·后端·mysql
数字新视界2 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB2 小时前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛2 小时前
MySQL的操作
数据库·mysql
猫咪很可爱3 小时前
Oracle ORA-4031 错误分析与处理:SGA 内存不足导致 update/exp/expdp 失败
数据库·oracle
小豆庄3 小时前
视频素材处理时的隐私盲区:云处理与本地处理的边界在哪
数据库·图像处理·视频·敏捷流程
Umi·4 小时前
MySQL库表操作
数据库·mysql
风哥2号4 小时前
数据库教程FGMT69:PostgreSQL运维诊断与监控分析
运维·数据库·postgresql
ss2735 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
数字新视界5 小时前
信创机房动环监控技术在智能运维中的应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统