MySQL は、データベースの保存、管理、クエリに使用できる一般的なリレーショナル データベース管理システムです。 MySQL では、重複したデータをクエリする必要がある場合があります。この記事では、MySQL を使用してデータの重複をクエリする方法を紹介します。
ステップ 1: MySQL でデータベースを作成し、データを追加します
MySQL でデータベースを作成し、重複データを含むテーブルを追加します。 SQL クエリのサンプルを次に示します。
CREATE DATABASE testdb; USE testdb; CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, email VARCHAR(50) NOT NULL ); INSERT INTO users (name, email) VALUES ('Tom', 'tom@email.com'), ('Steve', 'steve@email.com'), ('John', 'john@email.com'), ('Tom', 'tom@email.com'), ('Jim', 'jim@email.com');
このクエリは、「testdb」という名前の新しいデータベースを作成し、その中に「users」という名前のテーブルを作成します。テーブルには、「id」(主キー)、「name」、「email」の 3 つの列が含まれています。 5 行を挿入し、そのうち 2 行には同じ名前と電子メール アドレスが含まれていました。
ステップ 2: 重複データのクエリ
次に、すべての重複行を検索する必要があります。これを行うには、ネストされたクエリを使用します。
SELECT name, email, COUNT(*) c FROM users GROUP BY name, email HAVING c > 1;
このクエリは、テーブル内に名前と電子メール アドレスが複数回出現するすべての行を返します。 GROUP BY ステートメントを使用して名前と電子メール アドレスでグループ化し、HAVING ステートメントを使用してグループ内に複数の行を持つグループを除外します。
このクエリを実行すると、次の結果が得られます:
+------+----------------+---+ | name | email | c | +------+----------------+---+ | Tom | tom@email.com | 2 | +------+----------------+---+
ご覧のとおり、このクエリではテーブルに追加した重複データが見つかりました。結果には、重複する名前と電子メール アドレス、およびそれらがテーブルに出現する回数が表示されます。
ステップ 3: 重複データの削除
すべての重複行を削除する場合は、次のクエリを使用してそれらを削除できます:
DELETE FROM users WHERE id NOT IN ( SELECT id FROM ( SELECT MIN(id) id FROM users GROUP BY name, email ) t );
このクエリはすべての重複を削除します。最小 ID を持つ重複行ではない行。サブクエリを使用して、各繰り返しグループ内の最小の ID を選択しました。このサブクエリは、まず GROUP BY ステートメントを使用して名前と電子メール アドレスでグループ化し、次に各グループ内の最小の ID を選択します。メイン クエリは、NOT IN ステートメントとサブクエリを使用して、最小の ID を含まないすべての行を削除します。
このクエリを実行した後、上記のクエリを再度実行して、重複データが正常に削除されたかどうかを確認できます。
概要
MySQL で重複データのクエリを実行するのは簡単です。ネストされたクエリと GROUP BY ステートメントを使用して重複行を検索し、DELETE ステートメントを使用してそれらを削除できます。これらのテクノロジーを使用することで、データベースの管理と保守を容易に行うことができます。
以上がmysqlクエリデータの重複の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。