首页  >  文章  >  数据库  >  如何从 MySQL 表中删除重复行?

如何从 MySQL 表中删除重复行?

DDD
DDD原创
2024-11-03 04:59:02920浏览

How to Delete Duplicate Rows from a MySQL Table?

从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn