Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql &引用;插入。。“关于重复密钥更新”;仅插入新条目而不是替换?_Mysql_Sql Server_Insert_Duplicates - Fatal编程技术网

Mysql &引用;插入。。“关于重复密钥更新”;仅插入新条目而不是替换?

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值的行,并将

我有一个表,比如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值的行,并将条目附加到表的末尾

我能做些什么来防止这种情况?我觉得这和自动递增的主键有关?
谢谢

创建一个关于编号和名称的唯一综合索引

Alter table table1 Add unique index idx_unq(`number`,`name`);
然后在表1(数字,名称)值(num,name)中插入一个
Insert Ignore

这样可以防止将重复项插入表中


您从未使用过
重复键
,因为您从未尝试插入任何
id
,因此它始终是新的和唯一的:-)谢谢,我保留了insert语句以保留“on DUPLICATE KEY”,但添加alter table查询使其无缝工作!