使用merge into在插入数据判断是否数据是否存在,不存在则插入,存在则更新
merge into table1 t1
using (select #{ID_TYPE} as ID_TYPE, #{ID_NO} as ID_NO, #{ID_NO_TYPE} as ID_NO_TYPE
from dual) t2//创建虚拟表存放需要插入的数据
on (t1.ID_TYPE = t2.ID_TYPE and t1.ID_NO = t2.ID_NO)//虚拟表数据和实际表数据进行条件对比
when not matched then//当条件不成立时执行插入语句
insert
(ID_TYPE,
ID_NO,
ID_NO_TYPE
ORG,
DATA_TYPE,
ID_NAME,
BANK_NO,
POLICE_CONTACT,
POLICE_PHONE,
HISTORY,IS_BLACK,POLICE_APPROVE_TIMESTAMP,ISSUE_TIMESTAMP,START_TIME,END_TIME,LIST_DESCRIBE,FILE_SOURCE)
values
(#{ID_TYPE}, #{ID_NO},#{ID_NO_TYPE}, #{ORG}, #{DATA_TYPE}, #{ID_NAME}, #{BANK_NO}, #{POLICE_CONTACT}, #{POLICE_PHONE}, #{HISTORY},#{IS_BLACK}
,#{POLICE_APPROVE_TIMESTAMP},#{ISSUE_TIMESTAMP},#{START_TIME},#{END_TIME},#{LIST_DESCRIBE},#{FILE_SOURCE})
when matched then//当条件成立时执行更新语句
update set HISTORY = #{HISTORY} ,FILE_SOURCE = #{FILE_SOURCE} where t1.ID_TYPE = t2.ID_TYPE and t1.ID_NO = t2.ID_NO and t1.DATA_TYPE = t2.DATA_TYPE and t1.IS_BLACK = t2.IS_BLACK and t2.HISTORY != t1.HISTORY
本文介绍如何使用merge into语句实现在数据库中根据ID_TYPE和ID_NO检查记录的存在性。如果记录不存在,则插入新数据;若存在,则更新指定字段。

3295

被折叠的 条评论
为什么被折叠?



