【MySQL】重複レコードを抽出する2つの方法。簡単です。

MySQL
スポンサーリンク

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の検索機能では、こういったことはできないので、上記のクエリを直接入力します。

コメント

タイトルとURLをコピーしました