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 语句的 Using 子句中指定参数