我有一个表,说是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);
这应该防止将重复项插入到表中.