今天在做一些业务处理的时候遇到的一个问题,就是需要在一张数据表当中查询指定字段在整张表的排名,并且获取这个排名。
于是上网搜索相关资料学习。
将相关代码记录以此便于日后复习查看!
分数相同,排名并列写法
select score ,
if(@prerk = score,@rk,@rk:=@rk+1) as rank ,
@prerk:=score
from 表名,(select @rk:=0,@prerk:=NULL) a
-- where score >0
order by score desc
上述sql语句查询了score这个字段,在书表当中的排名,查询结果后出现的字段是score,rank,@prerk:=lxdd。
rank就是排名了。
可以再嵌套一个select语句,再次查询指定的用户的score的分数。
于是嵌套了一个select语句
SELECT
*
from
(select $rank_title ,id,
if(@prerk = $rank_title,@rk,@rk:=@rk+1) as rank ,
@prerk:=$rank_title
from user,(select @rk:=0,@prerk:=NULL) a
order by `$rank_title` desc) rank
where `id` = $userid ;
上述语句查询 后就是指定的userid的等级排名了。