用户在表中的排名位置?

时间:2011-02-25 18:29:16

标签: mysql sql database

我有一个游戏应用程序,我正在跟踪每个用户赢得的游戏数量,例如:

// 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)

由于

2 个答案:

答案 0 :(得分:4)

尝试计算您感兴趣的用户赢得更多游戏的用户数量(idusername

SELECT COUNT(*) FROM users 
WHERE num_games_won > (SELECT num_games_won FROM users WHERE id = 723)

答案 1 :(得分:1)

在这种情况下,您可以执行简单的ORDER BY。不幸的是,MySQL不支持其他数据库支持的很好的分析函数,如RANKROWNUMBER,因为当答案不像ORDER BY那么简单时,这些将是其他潜在的解决方案。

(编辑:由于SO上的这个答案,你可以排序cheat and simulate ROWNUMBER in MySQL

在这种情况下,你会SELECT * FROM users ORDER BY num_games_won DESC,第一行最多,第二行最多,等等。