新版本的mySql中如何删除重复数据?

问题描述 投票:0回答:2

How to delete duplicate data in mySql on new version?

SchoolId    StudentName 
101        Majid Bhuiyan
101        Majid Bhuiyan
102        Arif
103        Tamim Rahman
104        Sourov Doggesh

我希望它是 mySql 代码。如何仅删除该重复行中的一行。

学校编号:101 学生姓名:Majid Bhuiyan 这是数据表中出现的两次。 请有人帮我解决这个问题。

mysql database mysql-workbench rdbms dbms-job
2个回答
0
投票

您可以通过

group by
查找相似的行,并根据要删除的记录按最小值或最大值聚合 id。

DELETE FROM DETAILS
WHERE id NOT IN (
    SELECT MIN(id)
    FROM DETAILS
    GROUP BY EMPNAME, DEPT, CONTACTNO, CITY
);
Select * FROM DETAILS; 

正如您在这里所看到的,我们正在删除具有最小 id 的重复记录(如果 id 是自动生成的,则意味着第一个创建的记录)。

希望这有帮助!


0
投票

首先创建一个名为

tmp_students
的临时表,其中包含每个重复
SchoolId
记录的最小值
StudentName
,然后将原始学生表连接到此临时表以查找所有重复项。

CREATE TABLE tmp_students AS 
SELECT MIN(SchoolId) AS SchoolId, StudentName  
FROM students
GROUP BY StudentName
HAVING COUNT(*) > 1;

第二删除匹配的学生记录。这将保留具有最小

SchoolId
的行。 删除临时表,因为不再需要它。

DELETE s1 FROM students s1
JOIN tmp_students s2  
ON s1.SchoolId = s2.SchoolId;

DROP TABLE tmp_students;
© www.soinside.com 2019 - 2024. All rights reserved.