mysql 批量插入忽略已存在如何实现?

很简单的需求:

insert into tweets(user_id,xxx) values(1,2),(2,2)

user_id 和 xxx 组成一个联合约束索引

要求:

  • 批量插入
  • 忽略已经存在的 row,(是忽略,不是更新,不允许 sql 总出现 update),是忽略已存在 row,不是有重复,就让所有的 row 都不插入。比如一次插入 100 个 row,其中 10 个是重复的,那应该插入 90 个,而不是插入 0 个

如何实现?

阅读 2.5k
1 个回答
insert ignore into tweets(user_id,xxx) values(1,2),(2,2)

insert ignore,批量插入时忽略错误,错误会产生一个警告,后面的操作不会终止。

如果是 mysql 8 以上,还有 on duplicate key 可以用。

insert into tweets (name, xxx)
    values
    (1,2),(2,2)
    ('Samia', 22)
    as new
on duplicate key updat
    xxx = new.xxx
    ...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏