zoukankan      html  css  js  c++  java
  • INSERT ON DUPLICATE KEY UPDATE

    最近有个业务需求,有一批数据,在数据库里已存在的话,做insert操作,如果已存在,则做update操作。

    脑子里出现两个方案,以此记录一下

    方案一:

      遍历这批数据,通过id来区分新增跟更新操作,两次批量提交数据库,这个在此省略

    方案二:

      使用on duplicate key update 操作,以下语法为mybatis。

      

    INSERT INTO seller_sku_stock(
            id,
            sku_id,
            sku,
            warehouse_id,
            warehouse_name,
            stock
            )values
            <foreach collection="list"  item="item"  index="index"  separator="," >
                (
                #{item.id},
                #{item.skuId},
                #{item.sku},
                #{item.warehouseId},
                #{item.warehouseName},
                #{item.stock}
                )
            </foreach>
            ON DUPLICATE KEY UPDATE
            sku_id = VALUES(sku_id) ,
            sku = VALUES(sku) ,
            warehouse_id = VALUES(warehouse_id) ,
            warehouse_name = VALUES(warehouse_name) ,
            stock = VALUES(stock)

    显然方案二只需要跟数据库交互一下,对接口性能有特殊要求的情况下,方案二效率会高于一,而且代码简洁度会高一些,但可读性可能差点,需要在看完sql的情况下,才

    能明白整个逻辑

  • 相关阅读:
    烂泥:高负载均衡学习haproxy之TCP应用
    烂泥:高负载均衡学习haproxy之关键词介绍
    sqlpuls基本命令
    Oracle开机自启动
    centos6.5安装oracle11g_2
    centos7安装图片界面
    centos7安装activemq
    centos7删除自带openjdk
    centos7安装nexus私服2.14
    mysql优化记录
  • 原文地址:https://www.cnblogs.com/tianxia-09/p/8033036.html
Copyright © 2011-2022 走看看