用于删除具有2个特定重复字段的行的Mysql语法?

时间:2013-05-31 19:40:29

标签: mysql

我有一个包含标记信息的mysql数据库,一些标记对relation_idtag_id是重复的。忽略其他字段,是否可以选择(并最终删除)这些字段对是多余的行?

例如,我有这个表: phpMyAdmin Screenshot

并且第二行是重复的,因为它与前一个条目具有相同的relation_idtag_id值。第三排很好。第五行是副本,第七行是第八行,等等。

选择这些重复项的mySQL语法是什么?

3 个答案:

答案 0 :(得分:1)

为了防止mysql多次存储一个组合, 你可以像以下一样使用UNIQUE:

ALTER TABLE omeka_taggins ADD UNIQUE(relation_id, tag_id)

应该阻止向表中添加重复项

如果你在重复时尝试这样做, 你收到警告,
但你可以忽略这个警告:

ALTER IGNORE TABLE omeka_taggins ADD UNIQUE(relation_id, tag_id)

请在使用ignore关键字之前备份表格, 因为它忽略了很多好的警告

答案 1 :(得分:0)

如果我没有弄错,应该删除所有符合给定条件的行。

 DELETE FROM tags
 WHERE `tag_id`= 'some_value' AND `relation_id`= 'some_value';

答案 2 :(得分:0)

您可以使用group byhaving修饰符来查找重复项。类似的东西:

select tag_id, relation_id, count(*) from omeka_taggings group by tag_id,relation_id having count(*)>1