"INSERT INTO .. ON DUPLICATE KEY UPDATE" 只插入新条目而不替换?

"INSERT INTO .. ON DUPLICATE KEY UPDATE" Only inserts new entries rather than replace?

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

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

然而,

每次我运行:

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

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

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

为号码和姓名创建一个唯一的复合索引。

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

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

这应该可以防止将重复项插入 table。

Useful link on Unique indexes