获取排名列表:
$rankDefault = intval(($data['currentPage'] - 1) * $data['currentCount']);
pdo_fetchall("select @rank:=ifnull(@rank,0)+1 as rank,`id`,`openid`,`username`,`score`,`create_time` from (SELECT @rank := ".$rankDefault.") r, " . tablename($r_config['mysql']['tableUser']) . " as u $where order by score desc LIMIT " . ($data['currentPage'] - 1) * $r_config['function']['currentCount'] . ',' . $r_config['function']['currentCount']);
获取我的排名:
pdo_fetchcolumn("select rank FROM (SELECT @rank:=ifnull(@rank,0)+1 as rank,`id`,`openid`,`username`,`score`,`create_time`,`status` from (SELECT @rank :=0) r, " . tablename($r_config['mysql']['tableUser']) . " as u order by score desc) as uu $where ",array(':openid'=>$openid));
$getRankingData = pdo_fetchall("select * FROM (select @rank:=ifnull(@rank,0)+1 as rank,openid,username,image,kilometre,createtime FROM (SELECT id,`openid`,sum(`title`) as kilometre,username,image,createtime from (SELECT @rank :=0 ) r, " . tablename($r_config['mysql']['newpicshareMessageTable']) . " as mt where mt.note = :note AND mt.status = :status group by openid order by kilometre desc,createtime asc,id asc ) as mtt ) as mttt",array(':note'=>3,':status'=>1));
$myRankingData = pdo_fetchcolumn("select rank FROM (select @rank:=ifnull(@rank,0)+1 as rank,openid,kilometre,createtime FROM (SELECT id,`openid`,sum(`title`) as kilometre,createtime from (SELECT @rank :=0 ) r, " . tablename($r_config['mysql']['newpicshareMessageTable']) . " as mt where mt.note = :note AND mt.status = :status group by openid order by kilometre desc,createtime asc,id asc ) as mtt ) as mttt where mttt.openid = :openid",array(':note'=>3,':status'=>1,':openid'=>$openid));
--------------------------------------------------------------参考------------------------------------------------
需求:获取分类平均值的名次? 比如10个班级的平均分,按照班级名称排序,后面跟着名次。
记录表:table_test ;
字段:banji 班级;AvgS 平均分;pm 排名;
解决方法:
FROM
(
SELECT A.*,@rank:=@rank+1 as pm
FROM
(
SELECT banji,avg(score) as AvgS FROM table_test GROUP BY banji ORDER BY AvgS DESC
) A ,(SELECT @rank:=0) B
) M
ORDER BY M.banji
==============================>>>>>>>>输出结果:
banji AvgS pm
-----------------------
'1', '47.0000', '1'
'2', '12.0000', '3'
'5', '38.5000', '2'
原文链接:https://blog.csdn.net/k8080880/article/details/11253305
最新评论