一時テーブルを使用せずに 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 サイトの他の関連記事を参照してください。