2

我正在构建一个将“分数”存储在数据库中的应用程序,并且我希望能够告诉人们他们的排名情况。

所以现在,我有我的选择查询,它抓取所有数据库行并按分数降序对它们进行排序,因此分数从最高到最低。

现在我想要的是能够向每个用户显示他们的个人排名...所以如果 Jim 在该列表中排名第 33,它将在他的工作站上显示他的排名是 33...

那么我怎样才能得到 Jim 在结果集中落入的行号呢?(它们按唯一的员工 ID 排序......但我想你明白了)

因此,如果 Jim 登录,他会看到类似这样的信息:您有 670 分,您的排名是 33。

我在 MySQL 上使用 PDO。

我希望描述是有道理的。

4

1 回答 1

0

我的例子是 MySQLi,但是 PDO/MySQL 的逻辑是一样的

假设 $con 是您的数据库连接变量:

 $All_Users = $con->query("SELECT * FROM Users ORDER BY Score DESC"); // Get all users and order by descending order.

    $rank = 0;
        while($UserInfo = $All_Users->fetch_object()) {
          $rank++;
          echo $UserInfo->Username."has a rank of". $rank;
        }

输出将采用以下格式,在这种情况下,我们的用户表中只有 2 个用户,按 id 降序排列:

Bob 的等级为 3
Joe 的等级为 2
Pete 的等级为 1

如果在 mysql 查询中将 DESC 更改为 ASC,输出将是:

皮特的等级为 1
乔的等级为 2
皮特的等级为 3

于 2013-08-31T01:21:00.907 回答