0

タグ付け情報といくつかのタグペアを含む mysql データベースがあり、relation_id重複しtag_idています。他のフィールドを無視して、これらのフィールドのペアが冗長な行を選択 (および最終的には削除) することはできますか?

たとえば、次のテーブルがあります。 phpMyAdmin スクリーンショット

2 番目の行は、前のエントリrelation_idとと の値が同じであるため、重複しています。tag_id3行目は大丈夫です。5 行目は重複しており、7 行目、8 行目などは重複しています。

これらの種類の重複を選択するための mySQL 構文は何ですか?

4

3 に答える 3

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 キーワードを使用する前にテーブルをバックアップしてください。

于 2013-05-31T21:27:36.630 に答える
0

group byおよび修飾子を使用して、having重複を見つけることができます。これに似たもの:

select tag_id, relation_id, count(*) from omeka_taggings group by tag_id,relation_id having count(*)>1
于 2013-05-31T20:04:38.303 に答える
0

私が間違っていなければ、特定の基準を満たすすべての行を削除するのは単純な削除であるはずです。

 DELETE FROM tags
 WHERE `tag_id`= 'some_value' AND `relation_id`= 'some_value';
于 2013-05-31T19:45:14.910 に答える