データ量が増加し続けると、MySQL データベースの使用時に重複データの問題が発生する可能性があります。データが複製されると、より多くのストレージ容量が必要になるだけでなく、データが混乱したり不正確になったりする可能性もあります。したがって、重複データを削除する方法を知ることが重要です。この記事では、いくつかの MySQL ステートメントを使用して重複データを削除する方法を紹介します。
MySQL では、DISTINCT キーワードを使用すると、さまざまな値をクエリすることができます。たとえば、次のステートメントを使用して、すべての個別のユーザー名をクエリできます:
SELECT DISTINCT username FROM users;
繰り返し使用されるユーザー名を検索したい場合は、次のクエリを使用できます:
SELECT username, COUNT(*) FROM users GROUP BY username HAVING COUNT(*) > 1;
上記のクエリは 2 つを返します。データの列: ユーザー名とそのユーザー名がテーブルに出現する回数。 HAVING 句を使用すると、複数回出現する重複したユーザー名を除外できます。
INSERT INTO ステートメントとサブクエリを使用してバックアップ テーブルを作成し、重複データを削除できます。このバックアップ テーブルには、保持したいすべての一意のレコードが含まれます。
CREATE TABLE users_backup AS SELECT * FROM users WHERE 1 GROUP BY username;
これにより、「users_backup」という名前のバックアップ テーブルが作成されます。テーブルにはすべてのユーザー レコードが含まれますが、一意のユーザー名のみが含まれます。
バックアップ テーブルを作成したら、元のテーブルから重複レコードを削除できます。 DELETE ステートメントと INNER JOIN を使用して重複レコードを削除できます。
DELETE u1 FROM users u1 INNER JOIN users u2 WHERE u1.id > u2.id AND u1.username = u2.username;
上記のステートメントは、テーブル内の重複レコードを削除し、作成された最も古いレコードのみを保持します。 INNER JOIN 句では、レコードが削除されたときに比較できるように、テーブルをそれ自体に結合します。
最後に、INSERT INTO ステートメントを使用して、バックアップ テーブルから元のテーブルに一意のレコードを再挿入します。テーブル。
INSERT INTO users SELECT * FROM users_backup;
これにより、一意のユーザー名レコードを含むすべてのレコードがバックアップ テーブルから元のテーブルに挿入されます。
概要
MySQL で重複データを削除するのは複雑な場合がありますが、この問題は上記の方法を使用して簡単に解決できます。 DISTINCT キーワードを使用して重複データをクエリし、DELETE ステートメントと INNER JOIN を使用して比較により重複レコードを削除できます。最後に、INSERT INTO ステートメントを使用して、バックアップ テーブルの一意のレコードを元のテーブルに再挿入することもできます。上記の方法により、データベース内の重複データをクリーンアップし、データの精度と効率を向上させることができます。
以上がmysqlで重複したデータを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。