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