MySQLで重複したレコードデータ(ダブリレコード)を抽出する方法を2つ紹介します。
【方法1】の方が簡単ですが、表示されるデータが違ってくるので用途によって使い分けてください。
MySQLで重複レコードを抽出する方法
方法1:重複があるかどうかだけ知りたい場合
SELECT * FROM テーブル名 GROUP BY カラム1[, カラム2, カラム3, …] HAVING COUNT(*) >= 2;
重複しているレコードのどれかひとつだけ抽出されます。
方法2:重複しているレコードどちらも表示したい場合
SELECT * FROM テーブル名 WHERE (カラム1 [, カラム2, カラム3, …]) in ( SELECT カラム1 [, カラム2, カラム3, …] FROM テーブル名 GROUP BY カラム1 [, カラム2, カラム3, …] HAVING COUNT(*) >= 2 );
重複レコード全て抽出されます。
共通説明
- カラムには、ダブりを調べるカラム名を入れます。
- カラム指定は最低1つ。それ以上の場合はカンマ区切りで指定します。
- HAVING COUNT(*) >= の後の数字は、ダブリの数。
例えば、3つ以上ダブっているレコードを抽出するには、「3」にします。 - サンプルにはありませんが、クエリの最後に、ORDER BYでソートすると抽出結果が見やすくなります。
注意点
方法1は比較的高速に処理されますが、方法2の場合、1レコードずつ照らし合わせる処理なので、かなりの高負荷がかかります。
phpMyAdminの検索機能では、こういったことはできないので、上記のクエリを直接入力します。
コメント