【问题标题】:"INSERT INTO .. ON DUPLICATE KEY UPDATE" Only inserts new entries rather than replace?"INSERT INTO .. ON DUPLICATE KEY UPDATE" 只插入新条目而不是替换?
【发布时间】:2015-03-26 16:23:33
【问题描述】:

我有一个表,比如说 table1,它有 3 列:id、number 和 name。 id 是 auto_incremented。

我想实现一个向表中插入条目的sql语句,但是如果该行已经存在,则忽略它。

然而,

每次我跑步:

INSERT INTO table1( number, name) 
VALUES(num, name) 
ON DUPLICATE KEY 
UPDATE number = VALUES(number), 
       name = VALUES(name)

它似乎会忽略具有匹配数字和名称值的行,并且无论如何都会将条目附加到表的末尾。

我能做些什么来防止这种情况发生吗?我觉得这与拥有 auto_incrementing 主键有关吗? 谢谢

【问题讨论】:

  • 你从来没有DUPLICATE KEY,因为你从来没有尝试插入任何id,所以它总是新的和独特的:-)

标签: mysql sql-server insert duplicates


【解决方案1】:

创建一个关于数字和名称的唯一复合索引。

Alter table table1 Add unique index idx_unq(`number`,`name`);

然后做一个Insert Ignore INTO table1(number,name) VALUES(num, name);

这应该可以防止重复插入到表中。

Useful link on Unique indexes

【讨论】:

  • 谢谢,我保留了我的插入语句以保留“重复键”,但添加更改表查询使其无缝工作!
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 2014-06-05
相关资源
最近更新 更多