Mysql &引用;插入。。“关于重复密钥更新”;仅插入新条目而不是替换?
我有一个表,比如table1,它有3列:id、number和name。 id自动递增 我想实现一个sql语句,将条目插入表中,但如果行已经存在,则忽略它 但是, 每次我跑步时:Mysql &引用;插入。。“关于重复密钥更新”;仅插入新条目而不是替换?,mysql,sql-server,insert,duplicates,Mysql,Sql Server,Insert,Duplicates,我有一个表,比如table1,它有3列:id、number和name。 id自动递增 我想实现一个sql语句,将条目插入表中,但如果行已经存在,则忽略它 但是, 每次我跑步时: INSERT INTO table1( number, name) VALUES(num, name) ON DUPLICATE KEY UPDATE number = VALUES(number), name = VALUES(name) 它似乎忽略了具有匹配的number和name值的行,并将
INSERT INTO table1( number, name)
VALUES(num, name)
ON DUPLICATE KEY
UPDATE number = VALUES(number),
name = VALUES(name)
它似乎忽略了具有匹配的number和name值的行,并将条目附加到表的末尾
我能做些什么来防止这种情况?我觉得这和自动递增的主键有关?
谢谢创建一个关于编号和名称的唯一综合索引
Alter table table1 Add unique index idx_unq(`number`,`name`);
然后在表1(数字,名称)值(num,name)中插入一个Insert Ignore代码>
这样可以防止将重复项插入表中
您从未使用过重复键
,因为您从未尝试插入任何id
,因此它始终是新的和唯一的:-)谢谢,我保留了insert语句以保留“on DUPLICATE KEY”,但添加alter table查询使其无缝工作!