select aa.id,l.name,aa.score from
(select g.*, @a:= if(@b =language_id,if(@c = score,@a,@a+1),1) r,
@b:=language_id , @c:=score
from grade g,(select @a:=1,@b := -1 ,@c:=-1) a
order by language_id,score desc) aa
join language l on l.id=aa.language_id
where aa.r<=2
order by l.name,aa.score desc,aa.id asc;