从 MySQL 表中删除重复行
处理大型数据集时,识别和删除重复记录至关重要。本指南将提供一个全面的解决方案,用于从名为“employee”的 MySQL 表中删除重复行,该表由三个字段组成:empid、empname 和 empssn。
识别重复记录
要识别重复记录,您可以使用以下查询:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
此查询返回每个唯一 empssn 的出现次数。 HAVING 子句过滤掉计数大于 1 的行,有效识别重复的 empssn 值。
删除重复记录
要删除重复记录,我们可以使用以下查询:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
但是,如果在 DELETE 和子查询的 FROM 子句中都指定了目标表(“employee”),MySQL 会抛出错误。为了克服这个问题,我们可以将子查询包装在派生表中,如下所示:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
此修改后的查询有效地删除了重复记录,同时避免了目标表冲突。因此,数据库仅保留每个唯一 empssn 值具有最小 empid 的记录。
以上是如何从 MySQL 表中删除重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!