从 MySQL 中的表中删除重复行
处理包含重复记录的表时,有必要删除它们以维护数据诚信和效率。在 MySQL 中,实现这一点涉及识别和删除重复行,这个过程可以通过特定查询来完成。
在您的例子中,您已经使用以下查询根据字段 empssn 确定了重复记录:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
要删除重复记录,您尝试了以下查询:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
但是,您遇到了错误,因为 MySQL 不允许在 FROM 子句中指定目标表更新查询。
要解决此问题,一种方法是将子查询包装在派生表中:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
通过使用此修改后的查询,您可以有效地创建临时派生表(X) 包含来自员工表的必要数据。然后,主 DELETE 查询可以引用此派生表,根据 empid 和 empssn 的唯一组合删除重复行。此方法应该可以解决您遇到的错误,并允许您成功删除重复记录。
以上是当目标表位于 FROM 子句中时,如何删除 MySQL 表中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!