mysql 重複を削除

王林
リリース: 2023-05-12 11:29:07
オリジナル
9276 人が閲覧しました

MySQL データベースでは、データの重複が発生する可能性があります。この重複データはデータベースのパフォーマンスと信頼性に影響を与える可能性があります。したがって、データベースの正確性と整合性を確保するために重複データを削除する方法を学ぶ必要があります。

MySQL データベース内の重複データを削除するいくつかの方法を次に示します。

方法 1: DISTINCT キーワードを使用する

DISTINCT キーワードを使用して、結果から削除できます。クエリの重複レコード。たとえば、次の SQL ステートメントを使用して、「customers」という名前のテーブルから一意の都市を選択できます。

SELECT DISTINCT city FROM customers;
ログイン後にコピー

このクエリは、一意の都市名のみを含む結果セットを返します。重複レコードを削除する場合は、DISTINCT キーワードを DELETE キーワードに置き換えます。

DELETE FROM customers WHERE city IN (
  SELECT city FROM customers GROUP BY city HAVING COUNT(*) > 1
);
ログイン後にコピー

このクエリ ステートメントは、すべての都市で複数回出現する重複レコードを削除します。これにより、重複しない都市のみが削除されます。名前の表が含まれていました。

方法 2: GROUP BY 句を使用する

GROUP BY 句を使用すると、テーブル内のデータをグループ化し、カウントやその他の集計関数をグループごとにカウントできるようになります。 GROUP BY 句と HAVING 句を使用して重複データを削除できます。たとえば、次の SQL ステートメントを使用して、「customers」という名前のテーブルから重複レコードを削除できます。

DELETE FROM customers WHERE id NOT IN (
  SELECT MIN(id) FROM customers GROUP BY email
);
ログイン後にコピー

このクエリ ステートメントは、重複した電子メール アドレスを持つすべてのレコードを削除します。これにより、テーブル内の各電子メール アドレスが確実に削除されます。は一度だけ現れます。

方法 3: 一時テーブルを使用する

重複データを削除するもう 1 つの方法は、一時テーブルを使用することです。次の SQL ステートメントを使用して、一意のレコードを含む新しい一時テーブルを作成できます:

CREATE TABLE temp_table SELECT DISTINCT * FROM customers;
ログイン後にコピー

次に、元のテーブルのすべてのレコードを削除し、一時テーブルの内容を元のテーブルに挿入します。 :

DELETE FROM customers;
INSERT INTO customers SELECT * FROM temp_table;
DROP TABLE temp_table;
ログイン後にコピー

この方法では 2 つの SQL クエリと一時テーブルが必要で、比較的時間がかかりますが、元のテーブルのデータは削除されません。

方法 4: UNIQUE 制約を使用する

UNIQUE 制約を使用すると、テーブル内の列に一意性を強制できます。データの挿入時に UNIQUE 制約に違反すると、エラーが返されます。 ALTER TABLE ステートメントを使用してテーブルに UNIQUE 制約を追加し、重複レコードが挿入されないようにすることができます。

たとえば、次の SQL ステートメントを使用して、「customers」という名前のテーブルの「email」列に UNIQUE 制約を追加できます。

ALTER TABLE customers ADD UNIQUE (email);
ログイン後にコピー

この SQL ステートメントは、UNIQUE 制約を追加します。 "email_UNIQUE" という名前のインデックスを使用して、電子メール列の一意性を強制します。電子メール列に重複したレコードを挿入しようとすると、エラーが発生します。

重複データを削除すると、データベースのパフォーマンスと信頼性が大幅に向上します。 MySQL データベースではデータの重複を排除するためのさまざまな方法が提供されており、実際の状況に応じて適切な方法を選択できます。

以上がmysql 重複を削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート