Oracle 融合语句Merge

本文详细介绍了SQL中的MERGE语句用法,包括其语法结构和实际应用案例。通过一个具体的例子展示了如何使用MERGE来更新已存在的记录,并插入新的记录,实现了UPDATE和INSERT操作的结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一。语法

MERGE INTO table_name table_alias
USING (table|view|sub_query) alias
ON (join condition)
WHEN MATCHED THEN
UPDATE SET
col1 = col_val1,
col2 = col2_val
WHEN NOT MATCHED THEN
INSERT (column_list)
VALUES (column_values);

二。列子  建立实验表,e1和e2表中有重复的人,但工资不同

SQL> select * from e1;
EMPNO  ENAME   SAL
---------- ---------- ----------
7782      CLARK    2450
7839      KING        5000
7934      MILLER   1300

SQL> select * from e2;
EMPNO  ENAME   SAL
---------- ---------- ----------
7369      SMITH     900
7566      JONES    3075
7782      CLARK    2550
7839      KING        5100
7902      FORD      3100

merge into e1 using e2 on(e1.empno=e2.empno)
when matched then
update set e1.sal=e2.sal
when not matched then
insert values(e2.empno,e2.ename,e2.sal);
commit;
执行结果:

SQL> SELECT * FROM E1

EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 900
7566 JONES 3075
7782 CLARK 2450
7839 KING 5000
7902 FORD 3100
7934 MILLER 1300
6 rows selected.
SQL> SELECT * FROM E2
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 900
7566 JONES 3075
7782 CLARK 2550
7839 KING 5100
7902 FORD 3100
7934 MILLER 1400
E1表的前两行是自己的,没有变化,后面的行是e2表追加的。
Merge是update和insert的结合体,有做upate ,没有做insert

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值