MySQL テーブルには、データベースを混乱させ、データの整合性を損なう可能性がある重複レコードが含まれることがよくあります。これらの重複を削除することは、データの正確性を維持し、クエリのパフォーマンスを向上させるために非常に重要です。この記事では、一時テーブルを使用せずに重複レコードを排除する効率的な方法について説明します。
最も簡単な方法には、テーブル内の一意性を定義する列に一意のインデックスを作成することが含まれます。 TableA テーブルの場合、次のインデックスにより、member_id、quiz_num、question_num、answer_num の組み合わせが一意であることが保証されます:
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
インデックスが作成されると、MySQL は自動的に整合性を維持し、重複レコードが作成されるのを防ぎます。
または、主キーを追加しますテーブルは重複した挿入を防ぐこともできます。次のクエリは、主キーに基づいて重複レコードを削除します。
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 );
DELETE ステートメントは、id 列に基づいてレコードを削除し、同じ一意の列の組み合わせを持つレコードが 1 つだけ残るようにします。
以上が一時テーブルを使用せずに MySQL テーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。