MYSQL在一列上插入忽略

MYSQL在一列上插入忽略,mysql,sql,insert,Mysql,Sql,Insert,我试图使用insert ignore语句将名称放入数据库中。我不想创建重复项,但是,我使用的insert ignore语句一直在插入 声明如下: INSERT IGNORE INTO firstname(name) VALUES ('Tommy') 我的数据库显示: id | name ------------- 1 Tommy 2 Tommy 3 Tommy 为帮助我的人提供一些信息。我的id是我的主键,它是自动递增的 我的猜测是,因为新的id是自动创建的

我试图使用insert ignore语句将名称放入数据库中。我不想创建重复项,但是,我使用的insert ignore语句一直在插入

声明如下:

INSERT IGNORE INTO firstname(name) VALUES ('Tommy')
我的数据库显示:

id  |  name
-------------
1      Tommy
2      Tommy
3      Tommy
为帮助我的人提供一些信息。我的id是我的主键,它是自动递增的

我的猜测是,因为新的id是自动创建的,所以它认为这是一个新的结果!我不知道如何通过更大的SQL查询来解决这个EXCEPT问题,首先检查Tommy的名字是否存在


谢谢

这是因为
firstname
表中的
name
列是
不唯一的
。尝试使用此DDL语句添加
unique
约束

ALTER TABLE firstname ADD UNIQUE (name);

然后尝试添加重复的名称。希望它现在能起作用:)

这是因为
firstname
表中的
列的
不是唯一的
。尝试使用此DDL语句添加
unique
约束

ALTER TABLE firstname ADD UNIQUE (name);

然后尝试添加重复的名称。希望它现在能工作:)

您是否尝试过在“名称”列上设置“唯一键”约束?

您是否尝试过在“名称”列上设置“唯一键”约束?

鉴于您的架构,使用“忽略”没有任何区别。IGNORE用于忽略插入过程中引发的潜在错误


为了避免名称列中出现重复,请在该列上添加唯一约束,并从INSERT语句中删除IGNORE关键字。如果继续使用忽略,唯一约束将导致错误,但它将被忽略,这意味着实际上唯一约束将被忽略。

对于您的模式,使用忽略没有任何区别。IGNORE用于忽略插入过程中引发的潜在错误


为了避免名称列中出现重复,请在该列上添加唯一约束,并从INSERT语句中删除IGNORE关键字。如果继续使用“忽略”,唯一约束将导致错误,但它将被忽略,这意味着事实上唯一约束将被忽略。

我已经这样做了,效果非常好。您仍然会使用INSERT IGNORE还是只使用INSERT?您仍然可以使用
INSERT IGNORE
:)我已经完成了这项工作,效果非常好。您仍然使用INSERT IGNORE还是仅使用INSERT?您仍然可以使用
INSERT IGNORE
:)