我正在创建一个排行榜,它将显示以下内容:排名,用户名,分数
我目前有表格会显示mysql表中数据的用户名和分数,我只是想知道如何为每个用户显示排名,数字1是得分最高的用户然后降序
谢谢!
答案 0 :(得分:1)
我建议您阅读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>
答案 1 :(得分:0)
你可以在SQL中完成所有事情:
SET @row = 0;
SELECT
@row := @row + 1 AS rank
userName,
score
FROM
leaderboard
ORDER BY
score DESC
答案 2 :(得分:0)
你需要 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
问题是对任何大量数据执行计数(*)都很慢。但是你可以看到,一旦你获得了前两个不同分数的等级,你可以在没有查询的情况下确定代码中剩余行的等级。但请记住:你可能需要考虑关系。