MYSQL 中 REPLACE 和 DUPLICATE 的区别

相同之处:批量更新数据,目标数据存在更新,不存在插入。

不同之处:
一、REPLACE 步骤是删除旧数据,插入新数据,之前的递增自动编号不存在,会AUTO_INCREMENT一个新的自动编号,因此会刷新索引。
二、DUPLICATE 不会改变旧的递增自动编号,同样会保持旧的索引不变。

------------------------------------------
 
DUPLICATE 语法例子:
INSERT INTO `mytab` 
    (`pid`,`goodsid`,`batchid`,`batchdataid`,`code`,`status`,`packageType`, `dealerid`,`outboundTime`,`data`) 
VALUE
    (0,15,3,4,'888370000000483888888',1,0,4,1649988295,''),
    (0,15,3,4,'789550000000462455620',1,0,4,1649988295,''),
    (0,15,3,4,'654370000000483554368',1,0,4,1649988295,'')
ON DUPLICATE KEY UPDATE 
    `pid` = VALUES(`pid`), 
    `goodsid` = VALUES(`goodsid`),
    `batchid` = VALUES(`batchid`),
    `batchdataid` = VALUES(`batchdataid`),
    `status` = VALUES(`status`),
    `packageType` = VALUES(`packageType`), 
    `dealerid` = VALUES(`dealerid`),
    `outboundTime` = VALUES(`outboundTime`),
    `data` = VALUES(`data`)
;
 
------------------------------------------
 
REPLACE 语法例子:
REPLACE INTO `mytab`
    (`pid`,`goodsid`,`batchid`,`batchdataid`,`code`,`status`,`packageType`, `dealerid`,`outboundTime`,`data`)
VALUES 
    (0,5,3,4,'850070000000448910627',1,0,4,1649988295,''),
    (0,5,3,4,'789550000000462455620',1,0,4,1649988295,''),
    (0,5,3,4,'654370000000483554368',1,0,4,1649988295,'')
;


 
FROM: https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值