Mysql覆盖表中重复记录的两种实现方式
更新时间:2026年04月28日 11:09:22 作者:程序员阿伟
replaceinto和onduplicatekeyupdate这两种方式都需要表中存在主键或者唯一索引,前者会先删除再插入,后者则直接更新,如果没有主键或唯一索引,则两者都相当于insertinto操作
replace into 方式
前提条件
表中必须有主键或者唯一索引。
原理
根据主键或唯一索引找到相同主键的数据,然后删除原先的数据,再添加新的数据。
如果表中没有相同的主键或唯一索引,则相当于insert into。
使用案例
# topic、partition、groupid是主键 replace into t_offset (`topic`, `partition`, `groupid`, `offset`) values(?,?,?,?)")
ON DUPLICATE KEY UPDATE 方式
前提条件
表中必须有主键或者唯一索引。
原理
根据主键或唯一索引找到相同主键的数据,然后执行update更新操作。
如果表中没有相同的主键或唯一索引,则相当于insert into。
使用案例
# userid是主键 insert into black_list(userid) value (?) on DUPLICATE KEY UPDATE userid = ?
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
mysql出现ERROR 1819 (HY000)的解决方法
这篇文章主要为大家详细介绍了mysql出现ERROR 1819 (HY000)的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2016-10-10


最新评论