一時テーブルを使用しない MySQL の重複レコードの効率的な削除
データベース内の重複レコードの検出は、特に主キーがない場合に困難になる可能性があります。ただし、この問題に対処する効果的な手法があります。
この場合、アンケートに対するユーザーの回答を含む TableA というテーブルがあります。不注意によるミスにより、一部のユーザーが重複した回答を送信してしまいました。私たちの目的は、これらの重複を削除し、残りの 1 行を確実に保持することです。
解決策 1: 一意のインデックス
1 つの方法は、関連する列に一意のインデックスを追加することです。表Aの。これにより、これらのフィールドの一意性が強制され、さらなる重複の挿入が防止されます。
これを実現するには、次のクエリを実行します。
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
解決策 2: 主キーと削除
あるいは、テーブルに主キーを作成し、特定のクエリを利用して識別および削除することもできます。
主キーを作成するには、次のクエリを使用できます:
ALTER TABLE `TableA` ADD PRIMARY KEY (`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 );
以上が一時テーブルを使用せずに MySQL テーブルから重複レコードを効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。