我正在尝试完成此查询;我的标记字段设置为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*'
答案 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索引 在新行之前删除旧行 插入