场景
例如:学生最近考试的分数出来了,但是没有根据分数来排名次的。现在要用mysql语句来实现名次的排行。。。这种排行的例子有很多,比如微信运动步数,在一个走路计步数的活动里,记录今日步数的排行等等。下面就用分数排行来详细讲讲。希望对你有帮助
这里直接上sql语句
SELECT (@rowNO := @rowNo+1) AS rowno FROM (SELECT * FROM (自己的表名)) a,(SELECT @rowNO :=0) b
例子:
SELECT (@rowNO := @rowNo+1) AS rowno,a.*,(自己表中的字段) FROM (SELECT * FROM w_student_exam (自己的表名)) a ,(SELECT @rowNO :=0) b ORDER BY a.score DESC(按照哪个字段排序)
截图如下:
如果想要获取某个条件下的数据排名:
例:获取学生Id 为23 的学生的分数(score) 的排名
##子查询从内到外:最内层 是查到所有数据,其次将数据排序并加上名次,最后按照条件获取其中某一条的名次SELECT * FROM(SELECT (@rowNO := @rowNo+1) AS rowno,a.* FROM ( SELECT * FROM w_student_exam ) a ,(SELECT @rowNO :=0) b ORDER BY a.score DESC ) asd WHERE asd.student_id=23
以上的例子也适合用在微信运动步数的开发里。
sql语句也是差不多的,这里就不多写一遍了。。。