0

此处使用的查询

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_type_id相似值。如果存在,请避免重复输入。

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

我在字段中没有索引。

4

1 回答 1

2

您需要做的是创建一个跨越要保留为唯一的两列的唯一索引,然后将您的插入语句更改为 readINSERT 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;

希望有帮助:)

于 2012-08-14T07:58:13.987 回答