mysql查询成绩并排名,用mysql语句最好,能带上思路

比如有一个学生成绩表。张三 98 李四 78 赵六 54,如何用sql语句进行排名。并给出名次

select name,score, row_number() over(partiition by name order by score desc) as rank from t

先用成绩进行分组,然后按照成绩从高到低排序:
select t.name,t.score,count(1) from table t group by t.socre order by score desc;

参考自:
MySQL如何优化GROUP BY http://www.data.5helpyou.com/article237.html

SELECT b.NAME,b.score,IF(1=1,@rank:=@rank+1,@rank:=1) AS rankFROM (SELECT NAME,score FROM tableORDER BY score DESC ) b,(SELECT @id := NULL ,@rank:=0) a

SELECT @rownum:=@rownum+1 AS rownum, t.name,t.score from (SELECT @rownum:=0) r , table t

select name from student order by math; //排序mysql 语句

select name from student order by math desc; // desc 倒序排列

谢谢各位,我再整理下思路,明天跟各位交流我不懂的地方

图片说明

目前采纳了阿彭鹏鹏的做法,出现的这个效果,还需要修改

图片说明

图片说明

这回对劲了。谢谢各位*