插入mysql表并覆盖任何当前数据

插入mysql表并覆盖任何当前数据,mysql,Mysql,我正在将一些数据插入表中,但它偶尔会与表中的其他数据发生冲突(即,它具有相同的主键)。 我希望能够在数据存在时覆盖它,而不是让mysql向我发送一条错误消息,告诉我存在重复的主键。我知道我可以事先删除这些值,但这需要一个较大的查询。 是否可以覆盖这些值并抑制任何警告,或者强制删除这些值?您可以使用替换语句而不是插入。 看看您可以在MySQL中使用INTO来实现这一点 REPLACE INTO table SET name = 'Treffynnon' 查找“重复密钥更新” MySQL有一个“在

我正在将一些数据插入表中,但它偶尔会与表中的其他数据发生冲突(即,它具有相同的主键)。
我希望能够在数据存在时覆盖它,而不是让mysql向我发送一条错误消息,告诉我存在重复的主键。我知道我可以事先删除这些值,但这需要一个较大的查询。

是否可以覆盖这些值并抑制任何警告,或者强制删除这些值?

您可以使用替换语句而不是插入。 看看

您可以在MySQL中使用INTO来实现这一点

REPLACE INTO table
SET name = 'Treffynnon'
查找“重复密钥更新”

MySQL有一个“在重复密钥更新时插入…”命令。 你可以在这里找到它:


只是一张小备忘单。
Mysql有3种不同的方案来处理唯一的重复密钥:

如果你想

  • 不执行任何操作-使用
    INSERT IGNORE
  • 删除现有的并创建新的-使用
  • 更新现有-使用

set field=VALUES(field)
是一个更好的选择-省去了在查询中两次使用数据的麻烦。values()函数将为您从语句的insert部分提取它,因此您的数据只进入查询字符串一次。我喜欢无耻的自我提升。
REPLACE into
和重复更新时的
有什么区别?看起来他们有相同的结果。
INSERT INTO `table` VALUES ('a', 'b') ON DUPLICATE KEY UPDATE `field1`='a', `field2`='b'