您的位置:首页 > 数据库 > Oracle

Oracle 融合语句Merge

2013-01-29 14:36 155 查看
一。语法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: