mysql-“插入到..在重复键更新中”仅插入新条目而不是替换?

我有一个表,说是table1,它有3列:id,数字和名称.
id是auto_incremented.

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

然而,

每次我跑步:

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

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

我有什么办法可以防止这种情况发生?我感觉这与具有auto_incrementing主键有关吗?
谢谢

解决方法:

在编号和名称上创建唯一的复合索引.

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

然后执行“插入忽略” INTO table1(number,name)VALUES(num,name);

这应该防止将重复项插入到表中.

Useful link on Unique indexes

上一篇:mysqldump auto_increment导致主键错误


下一篇:PHP:MySQL查询无缘无故地复制更新