mysql高级排序
目录
表和数据
|
|
排名(row_number)
- 按分数排序,拿到名次(成绩相同排名不并列)
SQL:
|
|
结果:
解释:设置一个伪列@rownum,从1开始计数,依次加1;(select @rownum:=0) potato
,一定要起别名
注意:这是从小到大排;如果需要从大到小的话,order by score desc
。
排名(Rank)
- 按分数排序,拿到名次(成绩相同排名并列,有跳数,比如2个100,1个99,排名就是1,1,3)
SQL:
|
|
结果:
解释:设置一个伪列@rownum,@curnum就是当前的名次,@prescore记录前一个分数与当前行的分数进行比较,相等就用上一个的排名,不相等就用一直增加的那个数