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
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
相关文章推荐
- oracle:MERGE语句
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- oracle SQL语句练习MERGE、模糊查询、排序、
- Oracle中5个核心Sql语句的基本构造:Select、Insert、Update、Delete和Merge
- Oracle里通过merge语句判断重复插入
- [Oracle] Merge语句
- Oracle的INSERT ALL和MERGE语句
- Oracle 10g中对Merge语句的增强
- Merge into: Oracle中用一条SQL语句直接进行Insert/Update的操作
- [oracle] update和merge语句的几点写法
- Oracle-merge语句学习
- Merge用法:Oracle 10g中对Merge语句的增强
- Oracle merge into的用法,以及MySQL的相同功能语句
- Oracle中MERGE语句的使用
- 使用Oracle 10g MERGE语句更新数据行
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
- 子查询 oracle输入 set语句 MERGE 事务 数据类型 约束 视图 外键
- MySQL中实现插入或更新操作(类似Oracle的merge语句)
- Oracle 中MERGE语句的用法(转载)
- Oracle中MERGE语句的使用