PHP MYSQL - 根据分数获取单项的等级(位置)

时间:2012-01-17 22:17:43

标签: php mysql

我有一个MySQL数据库,其中包含一个名为 subm_items

的表

该表包含以下列(item_id,score)

E.g。

+---------+-------+
| item_id | score |
+---------+-------+
|    1    |   20  |
|    2    |   30  |
|    3    |    5  |
|    4    |   10  |
|    5    |   80  |
+---------+-------+

我希望能够预先形成一个查询(并在PHP中显示结果),该查询根据项目的得分确定条目的“排名”或“位置”。所有其他项目的得分。

例如,如果我传递item_id'5'(得分为80),则应返回等级1。

如果我传递item_id'3'(得分为5),则应该返回5级。

重要提示:如果有人愿意不仅向我提供MySQL查询,而且如何在PHP中显示查询结果(使用变量)例如)这将是伟大的!我在其他帖子中遇到过这个问题,但没有人提供如何在PHP中实际使用和显示查询结果。

谢谢!

1 个答案:

答案 0 :(得分:5)

好吧,如果你只是想显示排名表,你可以这样做:

$sql = mysql_query( "SELECT * FROM `subm_items` ORDER BY `score` DESC");
$i = 0;
while($row = mysql_fetch_assoc($sql)) {
    $i++;
    echo "Rank ".$i.": ID#".$row['item_id']." - Score: ".$row['score']."<br />\n";
}

如果你想在MySQL中计算排名,你需要这样的东西:

SET @rank=0;
SELECT (@rank:=@rank+1) as `rank`, `item_id`, `score` FROM `subm_items` ORDER BY `score` DESC

但IMO在PHP中使用计数器更容易。