重复键忽略?

时间:2010-03-02 21:14:30

标签: mysql

我正在尝试完成此查询;我的标记字段设置为UNIQUE,我只是希望数据库忽略任何重复的标记。

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY IGNORE '*the offending tag and carry on*'

甚至这是可以接受的

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE '*the offending tag and carry on*'

2 个答案:

答案 0 :(得分:312)

建议不要使用INSERT IGNORE,因为它忽略了所有错误(即它是一个草率的全局忽略)。 相反,因为在您的示例中tag是唯一键,请使用:

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c') ON DUPLICATE KEY UPDATE tag=tag;
重复键上的

产生:

  

查询正常,0行受影响(0.07秒)

答案 1 :(得分:14)

Mysql有这个方便的UPDATE INTO命令;)

编辑看起来他们将其重命名为REPLACE

  

REPLACE与INSERT完全一样,   除非表中有一个旧行   与a的新行具有相同的值   PRIMARY KEY或UNIQUE索引   在新行之前删除旧行   插入