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
相关推荐
java1234_小锋9 分钟前
MySQL索引设计有哪些原则?
数据库·mysql
djjdjdjdjjdj9 分钟前
golang如何编写SSL证书到期检测工具_golang SSL证书到期检测工具编写总结
jvm·数据库·python
2301_8135995515 分钟前
HTML5中Canvas局部刷新区域重绘的算法优化
jvm·数据库·python
m0_6028577615 分钟前
mysql如何防止用户通过子查询窃取权限_MySQL安全参数设置
jvm·数据库·python
添砖java‘’24 分钟前
MYSQL操作库
数据库·mysql
逻辑驱动的ken26 分钟前
Java高频面试考点14
开发语言·数据库·算法·哈希算法
qq_1898070326 分钟前
Less如何处理CSS长文本换行_封装Mixin解决不同场景需求
jvm·数据库·python
HHHHH1010HHHHH31 分钟前
CSS如何处理带有状态切换的折叠菜单_利用BEM修饰符管理状态
jvm·数据库·python
2401_8716965232 分钟前
如何在响应式网页中水平居中表单(CSS 绝对定位居中方案)
jvm·数据库·python
2301_7751481534 分钟前
CSS如何减少对HTML结构依赖_利用BEM命名保持样式的逻辑独立
jvm·数据库·python