我正在创建一个排行榜,它将显示以下内容:排名、用户名、分数
我目前有一个表,它将显示 mysql 表中数据的用户名和分数,我只是想知道如何为每个用户显示排名,第 1 是得分最高的用户,然后降序。
谢谢!
我正在创建一个排行榜,它将显示以下内容:排名、用户名、分数
我目前有一个表,它将显示 mysql 表中数据的用户名和分数,我只是想知道如何为每个用户显示排名,第 1 是得分最高的用户,然后降序。
谢谢!
您需要 1)获取您尝试排名的记录的分数 2)计算得分“更好”的记录数量(“更好”取决于您的游戏类型。篮球,分数越高越好。高尔夫,分数越低越好。)
所以,像
select records in order
for each record
score = record.score
rank = select count(*) + 1 from table where score_column is better than score
display data
end for
问题是对任何大量数据执行 count(*) 都很慢。但是您可以看到,一旦您获得了前两个不同分数的排名,您就可以在无需查询的情况下确定代码中剩余行的排名。但请记住:您可能需要考虑关系。
您可以在 SQL 中完成所有操作:
SET @row = 0;
SELECT
@row := @row + 1 AS rank
userName,
score
FROM
leaderboard
ORDER BY
score DESC
我建议阅读PHP/MySQL。
HTML 标头:打开表格,创建标头
<table>
<tr>
<td>Rank</td>
<td>User</td>
<td>Score</td>
</tr>
PHP:为每个用户动态生成行
<?php
$result = mysql_query("SELECT user, score FROM leaderboard ORDER BY score DESC");
$rank = 1;
if (mysql_num_rows($result)) {
while ($row = mysql_fetch_assoc($result)) {
echo "<td>{$rank}</td>
<td>{$row['user']}</td>
<td>{$row['score']}</td>";
$rank++;
}
}
?>
HTML 页脚:需要关闭表格
</table>