ホームページ > データベース > mysql チュートリアル > 一時テーブルを使用せずに MySQL で重複レコードを削除する方法は?

一時テーブルを使用せずに MySQL で重複レコードを削除する方法は?

Patricia Arquette
リリース: 2024-12-26 11:33:10
オリジナル
504 人が閲覧しました

How to Delete Duplicate Records in MySQL Without Using Temporary Tables?

一時テーブルを使用せずに MySQL テーブルから重複レコードを削除する

MySQL データベース内のデータの整合性を維持することは非常に重要であり、重複レコードの削除は多くの場合重要です必要なタスクです。この問題には多くの解決策が存在しますが、中にはリソースを大量に消費する一時テーブルの使用が必要になる場合もあります。この記事では、一時テーブルに頼らずに重複レコードを削除する別の方法を紹介します。

一意のインデックスを使用する

テーブルに主キー列がない場合は、レコードを一意に識別する列の一意のインデックス。この場合、列 member_id、quiz_num、question_num、およびanswer_num が一意のインデックスを構成する必要があります。このインデックスを追加すると、データベースは自動的に一意性を強化し、今後重複レコードが挿入されるのを防ぎます。

ALTER IGNORE TABLE `TableA`
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
ログイン後にコピー

主キーとサブクエリの使用

あるいは、テーブルに主キーを追加し、サブクエリを使用して重複レコードを特定して削除することもできます。主キーを追加するには、次のクエリを実行します。

ALTER TABLE `TableA`
ADD PRIMARY KEY (`id`);
ログイン後にコピー

主キーを設定したら、次のクエリを使用して重複レコードを削除できます。

DELETE FROM member
WHERE id IN (
  SELECT *
  FROM (
    SELECT id
    FROM member
    GROUP BY member_id, quiz_num, question_num, answer_num
    HAVING (COUNT(*) > 1)
  ) AS A
);
ログイン後にコピー

このクエリまずサブクエリを使用して重複レコードを特定し、次にそれらをテーブルから削除します。 id 列は、重複セットごとに少なくとも 1 つのレコードが確実に保持されるようにするために使用されます。

適切な方法の選択

どちらの方法でも、一時テーブルを使用せずに重複レコードを効果的に削除します。 。どちらを選択するかは、特定の要件とテーブルの構造によって異なります。今後重複レコードが挿入されることが懸念される場合は、一意のインデックスを作成することをお勧めします。それ以外の場合は、主キーとサブクエリを使用することが、1 回限りの重複削除の効率的な解決策となる可能性があります。

以上が一時テーブルを使用せずに MySQL で重複レコードを削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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