oracle中merge的使用
用法一:可以进行多表关联后的更新
SQL脚本:
merge into tbuser u using tborgan o on (u.organid = o.organid) when matched then update set u.remark=o.organname
SQL脚本的含义:
tbuser表与tborgan表关联,用organ表中的organname字段更新tbuser表中的remark字段
用法二:检查记录是否存在,如果存在就更新,不存在就添加
SQL脚本:
merge into tbsysconfig s using dual on (s.id=184) when matched then update set s.keydescribe='184184' when not matched then insert(id,organid,keydescribe) values(184,1,'184')
SQL脚本的含义:
检查tbsysconfig表中是否有id=184的记录,如果有,就更新,如果没有,就新建一条新的记录。这种方式比if exists的效率要高很多
用法三:合并多表的记录
SQL脚本:
merge into tbuser u using tbuser2 u2 on (u.username=u2.username) when not matched then insert(userid,username) values(u2.userid,u2.username)
SQL脚本的含义:
检查tbuser2表的记录tbuser表是否有,tbuser2表中有tbuser表中没有的记录,插入到tbuser表中