用dense_rank()窗口函数来对排名做处理,再对排名筛选即可 select g.id,l.name,score from language l join (select dense_rank()over(partition by language_id order by score desc) rk,id,language_id,score from grade) g on g.language_id=l.id where g.rk<=2 order by name,score desc,g.id