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
相关推荐
Oueii几秒前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Elastic 中国社区官方博客13 分钟前
现已正式发布: Elastic Cloud Hosted 上的托管 OTLP Endpoint
大数据·运维·数据库·功能测试·elasticsearch·全文检索
2501_9083298520 分钟前
使用Python自动收发邮件
jvm·数据库·python
heimeiyingwang39 分钟前
【架构实战】数据库分库分表实战
数据库·架构
爬山算法1 小时前
MongoDB(60)如何使用explain命令?
数据库·mongodb
2501_908329851 小时前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
瀚高PG实验室1 小时前
数据库因坏块导致无法VACUUM FREEZE问题处理
数据库·瀚高数据库
gechunlian881 小时前
Redis简介、常用命令及优化
数据库·redis·缓存
ahauedu1 小时前
MySQL 8.0+ 默认使用 caching_sha2_password 插件进行密码加密
数据库·mysql
CoderIsArt1 小时前
编译器构建中涉及的算法
数据库·算法