Oralce的MERGE INTO使用

用途:

        可以同时从1个或者多个源表对目标表进行更新、插入、删除数据,经常用于操作大量的数据,即对于大批量的数据更新、插入时效率极高。

MERGE INTO Table_name a
        USING (SELECT  count(ID) c FROM Table_name where id=#{id}) b
        ON (b.c>0)
        WHEN MATCHED THEN
        UPDATE SET
            <if test="field != null">
                #{field,jdbcType=NUMERIC},
            </if>
            where id=#{ID}
        WHEN NOT MATCHED THEN
        insert
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                ID,
            </if>
            <if test="field != null">
                field,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=VARCHAR},
            </if>
            <if test="field != null">
                #{field,jdbcType=NUMERIC},
            </if>
        </trim>

这段代码是对单表的数据进行新增或者修改的操作

首先是看条件表中的id是否和传过来的数据id是否有大于零,大于零表示数据库中有这一条数据

则执行WHEN MATCHED THEN中的代码进行根据id修改字段

若不大于零表示表中未找到对应的字段,那么就会执行NOT MATCHED THEN后的插入语句

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值