关于 mysql 查询重复数据去重并且保留一条数据

比如我的数据如下图所示,查询目的是查询出main重复的,并且保留main分组中score最大的一条数据,也参考了很多答案但是并不理想,后来在技术群里请教了一位大神 关于 mysql 查询重复数据去重并且保留一条数据

关于 mysql 查询重复数据去重并且保留一条数据

 

最后的sql贴出来:

select id, main, score from (
    select id, score , main, if(@pmain = main, @rank:[email protected]+1, @rank:=1) as rank, @pmain:=main from student order by main, score desc
)tmp
where rank = 1

sql提供者微信名:伍鲜  特此标明