SQL 如何删除特定列的重复行并保留一个

SQL How to delete duplicate rows of a specific column and keep one

下面的代码returns 列出了特定列的重复行。在这种情况下,我试图找到大学名称的重复项。我的问题是如何删除重复项并为每个不同的 university_name?

只保留一份副本
    Select * from `university` where `university_name` in ( select `university_name` from `university` group by `university_name` having count(*) > 1 )

这是结果:

你能解释一下我是 SQL 的新手吗!提前致谢!!

试试这个:

DELETE  u
FROM    university u
        LEFT JOIN
        (
            SELECT MIN(ID) ID, university_name
            FROM    university
            GROUP   BY university_name
        ) v ON  u.ID = v.ID AND
                u.university_name = v.university_name
WHERE   v.ID IS NULL

1) 如果要保留id值最小的行:

DELETE a
FROM university a, university b
WHERE a.id > b.id
AND  b.university_name=a.university_name

2) 如果要保留id值最高的行:

DELETE a
FROM university a, university b
WHERE a.id < b.id
AND  b.university_name=a.university_name

删除重复项并保留 ID 最旧的行

DELETE a
FROM university a
JOIN university b ON a.university_name = b.university_name
WHERE a.id > b.id