Oracle 融合语句Merge

来源:互联网 发布:软件系统升级改造方案 编辑:程序博客网 时间:2024/05/01 19:13

一。语法

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

 

原创粉丝点击