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 列删除记录,确保仅保留一条具有相同唯一列组合的记录。
以上是如何在不使用临时表的情况下从 MySQL 表中删除重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!