我有一个游戏应用程序,我正在跟踪每个用户赢得的游戏数量,例如:
// table: users
id | username | num_games_won
如何根据num_games_won告诉用户他们的整体排名?例如:
id | username | num_games_won
-----------------------------------
723 john 203
724 mary 1924
725 steve 391
排名将是:mary-> 0,steve-> 1,john-> 2。给定用户名,我如何找到他们的排名? (我正在使用mysql)
由于
答案 0 :(得分:4)
尝试计算您感兴趣的用户赢得更多游戏的用户数量(id
或username
)
SELECT COUNT(*) FROM users
WHERE num_games_won > (SELECT num_games_won FROM users WHERE id = 723)
答案 1 :(得分:1)
在这种情况下,您可以执行简单的ORDER BY
。不幸的是,MySQL不支持其他数据库支持的很好的分析函数,如RANK
或ROWNUMBER
,因为当答案不像ORDER BY
那么简单时,这些将是其他潜在的解决方案。
(编辑:由于SO上的这个答案,你可以排序cheat and simulate ROWNUMBER
in MySQL
在这种情况下,你会SELECT * FROM users ORDER BY num_games_won DESC
,第一行最多,第二行最多,等等。