MySQLで重複レコードを削除する

データベースを適当に使っていると、レコードを重複して記録してしまうことがあります。キーとして設定していれば重複は防げますが、設計の時と使用後で使い方が替わってくることもあると思います。PhpMyAdminなどでSQLを実行すると、重複したレコードを除くことができます。

今回はAdressTableというテーブルから、Nameという項目で重複を削除します。いったん重複したレコードを除いたtemp_AdressTableというテーブルを作り、問題が無ければ元のテーブルと入れ替えます。

CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`;

重複しているかどうかはNameだけで判断するので、その他の項目が一致するかどうかは見ません。たとえば、Ageという項目も含めて重複を比較する場合は、以下のようにします。

CREATE TABLE `temp_AdressTable` as SELECT * FROM `AdressTable` GROUP BY `Name`, `Age`;