Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > Mysql覆盖表中重复记录

Mysql覆盖表中重复记录的两种实现方式

作者:程序员阿伟

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 = ?

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文