2

可能重复:
Mysql rank 函数

我在 MySQL 中有下表:

===================================================================
id  | member|  total_correct_question | time_taken_in_seconds |

===================================================================
1   |  abc  |     2                    |       4              |
2   |  def  |     3                    |       6              |
3   |  ghi  |     3                    |       4              |
4   |  jkl  |     3                    |       5              |
====================================================================

我想从 mysql 查询中显示每个用户的排名。任何人都可以建议我对此进行查询吗?

4

2 回答 2

1

try this:

  SELECT @i:=@i+1 AS rank,a.*
  FROM
      (SELECT * 
       FROM   Your_table  
       ORDER BY total_correct_question DESC,
                time_taken_in_seconds)a,(SELECT @i:=0) r  


SQL Fiddle demo

于 2012-09-22T05:46:15.057 回答
1

您可以创建一个从原始查询生成笛卡尔积的子查询,最有趣的是您可以将其递增一(然后结果为 RANK Number)。

SELECT    @rankNo:=@rankNo+1 RankNo,
          a.*
FROM      Table1 a, (SELECT @rankNo:=0) r 
ORDER BY `total_correct_question` DESC,
         `time_taken_in_seconds` ASC

SQLFiddle 演示

于 2012-09-22T05:51:53.387 回答