如果两个用户具有相同的信用数量,则按ID排序

Sim*_*sen 0 php mysql

:-)我有这个脚本,它找到从学分数中取得的用户位置.一切正常,但我有一点问题.如果两个用户具有相同的信用,则两个用户将处于相同的位置.我可以这样做,所以如果有更多用户具有相同的积分,那么系统需要按用户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的用户

Jos*_*ell 6

ORDER BY credits DESC, id ASC.这将按信用分类并与ID断开关系.

  • UPDATE

我现在明白你想要用户的排名信息,而不仅仅是按照信用和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/