SQL中插入数据merge into判断数据是否存在

本文介绍如何使用merge into语句实现在数据库中根据ID_TYPE和ID_NO检查记录的存在性。如果记录不存在,则插入新数据;若存在,则更新指定字段。

使用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                               
                                      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值