phpmyadmin 如何在mysql中删除表中的重复行

1tu0hz3e  于 2022-11-09  发布在  PHP
关注(0)|答案(1)|浏览(159)

我需要从mysql中的表中删除重复的记录。所以我有一个表名“雇员”字段是empid,empname,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
);

您可以假设表中记录是

EmpId  EmpName  EmpSSN
-------------------------------
 1     Jack     555-55-5555
 2     Joe      555-56-5555
 3     Fred     555-57-5555
 4     Mike     555-58-5555
 5     Cathy    555-59-5555
 6     Lisa     555-70-5555
 7     Jack     555-55-5555
 8     Mike     555-58-5555
 9     Cathy    555-59-5555
10     Lisa     555-70-5555
11     Lisa     555-70-5555

但我有一个mysql错误是
您不能在FROM子句中指定要更新目标表'employee'

niknxzdl

niknxzdl1#

将其 Package 到派生表中的技巧对这种情况有效吗?(基于http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-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
);

Edit是的,似乎在这一端工作。

相关问题