Oracle 融合语句Merge

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

一。语法

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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值