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

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

Barbara Streisand
リリース: 2024-12-31 12:48:11
オリジナル
927 人が閲覧しました

How to Remove Duplicate Records from a MySQL Table Efficiently Without Using Temporary Tables?

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

データの整合性の観点から、重複レコードの処理は問題になる可能性があります。複雑なタスク。偶発的な二重送信により、テーブル TableA に複数の同一エントリが含まれるシナリオを考えてみましょう。少なくとも 1 つの一意の行を保持しながら、これらの重複をパージする必要がある場合に問題が発生します。

UNIQUE INDEX アプローチ:

効果的な方法の 1 つは、一意のインデックスを追加することです。関連する列:

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

このインデックスは、指定された列に一意性を適用し、重複した組み合わせが存在しないようにします。 存在する。その結果、同一のレコードを挿入しようとしてもデータベースによって拒否されます。

主キーのアプローチ:

あるいは、テーブルに主キーを導入することもできます。主キーは、各行を区別する一意の識別子です。これを既存のテーブル構造に追加することで、後で次を実行できます。

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
            );
ログイン後にコピー

このクエリは、グループ数を比較し、カウントが 1 より大きい行をターゲットにすることで、重複する行を特定して削除します。id 列は、次のことを表すことができます。既存の主キー、またはこの目的のためだけに追加された新しい主キーのいずれかです。

どちらのアプローチも、MySQL テーブル内の重複レコードの問題に対する効率的な解決策を提供し、データを維持できるようにします。一時テーブルを必要としない整合性。

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

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