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

标签 mysql sql phpmyadmin duplicates

以下代码返回特定列的重复行列表。在这种情况下,我试图找到大学名称的重复项。我的问题是如何删除重复项并为每个不同的 university_name 只保留一份副本?

    Select * from `university` where `university_name` in ( select `university_name` from `university` group by `university_name` having count(*) > 1 )

这是结果:

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

最佳答案

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

关于mysql - SQL如何删除特定列的重复行并保留一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35357394/

相关文章:

php - PHP如何获取下一页的下一个ID

c# - Entity Framework (EF6)+ MySql数据库第一个模型多对多关系错误查询生成

sql - PostgreSQL 中的分层总和

mysql - SQL CURRENT_DATE 没有收集我期望的结果

PHPmyadmin 在访问任何数据库时永远升级/加载

php - 使用查询mysql(表wordpress)从字段meta_key获取一些字符串

mysql - 如何在关系数据库中实现 "number of likes"

sql - 在单个查询中从两个不同的条件获取不同的值

sql - 如何使用 unpivot 函数在其他列中查找最小值来忽略字符串值

php - 在 MySql 中存储大量内容