Mysql查詢去重

Hello_Smile發表於2021-04-13

需求:查詢學生表中的學生id,姓名,班級,年齡,分數

學生表 students

但是由於歷史遺留的原因,導致裡面有很多很多的重複資料,先需要排除姓名相同的資料,然後保留其中age最大的,當age相同的話,保留grad最大的資料

select t1.* from students t1 where id in (
    select min(id) id from students t1 ,(
        select name,max(age)as age,max(grade) as grade from students group by name
    ) t2 where t1.name = t2.name and t1.age = t2.age and t1.grade = t2.grade 
    group by t1.name
) 

查詢完後,發現600W的資料,用時在16S左右。
不知道有誰有優化方案?

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章