Mysql 插入查询中是否有任何选项可以通过比较两个字段来避免重复输入?

Mysql 插入查询中是否有任何选项可以通过比较两个字段来避免重复输入?,mysql,Mysql,此处使用的查询 INSERT INTO tags (name, type, tag_type_id) SELECT name, 'open', (SELECT id from types where name = tag_types.name) FROM tag_types 它可以有如下值 INSERT INTO tags (name, type, tag_type_id) ('first', 'open', 2), ('second', 'open', 5), ('first', 'open

此处使用的查询

INSERT INTO tags (name, type, tag_type_id) SELECT name, 'open', (SELECT id from types where name = tag_types.name) FROM tag_types
它可以有如下值

INSERT INTO tags (name, type, tag_type_id) ('first', 'open', 2), ('second', 'open', 5), ('first', 'open', 2);
我不想重复上面的条目。我需要检查表中是否存在具有类似值的
name
tag\u type\u id
。如果存在,请避免重复输入

如何通过更改上述查询避免重复条目


我在字段中没有索引。

您需要做的是创建一个跨越两列的唯一索引,并将insert语句改为读取
insert IGNORE INTO…
这将防止重复项进入表中

ALTER TABLE tags ADD UNIQUE INDEX unq_name_type (name, tag_type_id);
然后在插入时

INSERT IGNORE INTO tags (name, type, tag_type_id) ('first', 'open', 2), ('second', 'open', 5), ('first', 'open', 2);

INSERT IGNORE INTO tags (name, type, tag_type_id) SELECT name, 'open', (SELECT id from types where name = tag_types.name) FROM tag_types;

希望有帮助:)

1。唯一索引2。只是不要在查询中放入重复项,就这么简单is@zerkms:我无法使
名称
标记类型id
唯一。这些值是可以更改的。我只想避免重复,当两个字段的组合与已存在的行相同时。“我不能使name或tag_type_id唯一。”---如果不能,则不需要这样做。