oracle中merge方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中merge方法相关的知识,希望对你有一定的参考价值。

  先看SQL语句:merge into employee e using emps em on (e.emp_id=em.emp_id)

when matched then  update set e.emp_name=em.emp_name

when not matched then insert values (em.emp_id,em.emp_name)

  1.将emps表中的数据更新到employee表中,以主键匹配,如果主键匹配就执行update语句,如果不匹配则执行insert语句,需要注意的是,如果emps表中的数据均匹配employee表的数据,则不能写insert语句,也可以指处理匹配的情况,即没有when not matched 语句

  2.using后边也可以用视图或者子查询,如上边的例子也可以写为:

merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id) 

when matched then  update set e.emp_name=em.emp_name

when not matched then insert values (em.emp_id,em.emp_name)

  3.update和insert子句可以加where子句:

merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id)

when matched then  update set e.emp_name=em.emp_name where em.emp_name like ‘%%

when not matched then insert values (em.emp_id,em.emp_name) where em.emp_name like ‘%%

即只添加emps表中含有张的数据

  4.update子句后可以跟delete子句删除一些不需要的数据,delete只能和update子句配合使用

merge into employee e using (select * from  emps) em on (e.emp_id=em.emp_id)

when matched then  

update set e.emp_name=em.emp_name delete where e.emp_id=em.emp_id where em.emp_name like ‘%%

when not matched then insert values (em.emp_id,em.emp_name)

即不更新emps表中含有张字的数据

以上是关于oracle中merge方法的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中merge into的用法

oracle中 merge into 的用法

在 Oracle Merge 语句的 Using 子句中指定参数

oracle数据库,覆盖插入数据---- merge into

oracle 正则表达式和 MERGE

SQL Merge 语句在 Oracle 11g 中有效,但在 9i 中无效