ホームページ  >  記事  >  データベース  >  mysqlクエリデータの重複

mysqlクエリデータの重複

WBOY
WBOYオリジナル
2023-05-12 10:00:372934ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。