:-)我有这个脚本,它找到从学分数中取得的用户位置.一切正常,但我有一点问题.如果两个用户具有相同的信用,则两个用户将处于相同的位置.我可以这样做,所以如果有更多用户具有相同的积分,那么系统需要按用户ID排序并从中给出一个位置吗?
到目前为止这是我的代码:
$sql = "SELECT COUNT(*) + 1 AS `number`
FROM `users`
WHERE `penge` >
(SELECT `penge` FROM `users`
WHERE `facebook_id` = ".$facebook_uid.")";
$query_rang = $this->db->query($sql);
Run Code Online (Sandbox Code Playgroud)
所以,如果我有这个:
ID -------- Credits
1 -------- 100
2 -------- 100
3 -------- 120
Run Code Online (Sandbox Code Playgroud)
然后排名列表应该是这样的:
1号是ID为3的用户
数字2是ID为1的用户
3号是ID为2的用户
ORDER BY credits DESC, id ASC.这将按信用分类并与ID断开关系.
我现在明白你想要用户的排名信息,而不仅仅是按照信用和ID对用户进行排序.这将为您提供完整的用户列表及其排名:
SELECT @rank:=@rank+1 AS rank, users.id, users.facebook_id FROM users, (SELECT @rank:=0) dummy ORDER BY penge DESC, id ASC
Run Code Online (Sandbox Code Playgroud)
获取行号是这个博客文章解决的棘手问题:http: //jimmod.com/blog/2008/09/displaying-row-number-rownum-in-mysql/
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |