重复键忽略?
伙计们我试图完成这个查询 - >我的标记字段设置为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*'
不会使用建议之前被删除插入IGNORE,因为它忽略所有错误(即它是一个马虎的全局忽略)。 相反,因为在你的例子tag
是唯一键,使用:
INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c') ON DUPLICATE KEY UPDATE tag=tag;
上重复键生成:
查询OK,0行受到影响(0.07秒)
Mysql已经这个方便UPDATE INTO命令;)
编辑看起来他们给它改名,以取代
更换工程完全像INSERT, 除了th在如果旧行的表 具有相同的值作为一个 主键或唯一索引的新行中, 旧行的新行 插入
Dood我会需要你详细说明那个? – 2010-03-02 21:19:30
感谢您的帮助和时间,Ivan Nevostruev解决方案似乎为我做了窍门 – 2010-03-02 21:27:00
替换将替换之前删除冲突的行。如果您有外键,指向您遇到麻烦的已删除行。 – nakhli 2012-08-07 20:53:46
参见:[“INSERT IGNORE”vs“INSERT ... ON DUPLICATE KEY UPDATE”](http://*.com/q/548541/1402846)。 – Pang 2013-04-07 11:17:18