在MySQL中,不存在类似于SQL Server或Orcal等中的rank()函数来得到排名;所以我们需要手动地写这个rank功能。
-
- select score, @rk := @rk+1 as rank
- from cmyx_wxa_fans fans,(select @rk:=0) a
- -- where score >0
- order by score desc
查询结果如下: score降序排列(score相同时,排名继续增加),示例:
注:这里的(SELECT @rk:= 0) a 的作用是:在同一个select语句中给变量@rk赋初始值。效果等同于,两个sql语句,第一个先赋值,第二个再select如下:
-
- select score ,
- if(@prerk = score,@rk,@rk:=@rk+1) as rank ,
- @prerk:=score
- from cmyx_wxa_fans fans,(select @rk:=0,@prerk:=NULL) a
- -- where score >0
- order by score desc