mysql查找删除重复数据并只保留一条实例详解
有这样一张表,表数据及结果如下:
school_id
school_name
total_student
test_takers
1239
AbrahamLincolnHighSchool
55
50
1240
AbrahamLincolnHighSchool
70
35
1241
AcalanesHighSchool
120
89
1242
AcademyOfTheCanyons
30
30
1243
AgouraHighSchool
89
40
1244
AgouraHighSchool
100
50
我们可以看出,school_name的字段值有重复数据(AbrahamLincolnHighSchool和AgouraHighSchool分别出现两次),那么如何删除这两条数据,从而只让这两个数值出现一次呢?具体实现方法如下:
1、删除重复记录,保存Id最小的一条
deleteFROM`test`WHERE`school_name`in(SELECT`school_name` FROM`test` GROUPBY`school_name` HAVINGCOUNT(*)>1)andschool_idnotin(selectmin(school_id)fromtestgroupbyschool_idhavingcount(*)>1)
先使用GROUPBYhaving语法查询出重复的数据,然后删除重复数据并保留school_id最小的一条.
2、删除重复记录,保存Id最大的一条
deleteFROM`test`WHERE`school_name`in(SELECT`school_name` FROM`test` GROUPBY`school_name` HAVINGCOUNT(*)>1)andschool_idnotin(selectmax(school_id)fromtestgroupbyschool_idhavingcount(*)>1)
原理和上面一样。
以上就是mysql查找删除重复数据并只保留一条实例详解,希望能帮助到大家,谢谢大家对本站的支持!