【问题标题】:How to calculate Rank from mysql table [duplicate]如何从mysql表中计算排名[重复]
【发布时间】:2012-09-14 11:55:12
【问题描述】:

可能重复:
Mysql rank function

我在 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 查询中显示每个用户的排名。谁能建议我对此进行查询?

【问题讨论】:

  • 欢迎来到stackoverflow。这是一个很常见的问题。发帖前请先花一分钟时间搜索档案。通常一个问题已经被提出并回答了 - 通常是多次。

标签: mysql sql


【解决方案1】:

试试这个:

  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

【讨论】:

【解决方案2】:

您可以创建一个从原始查询生成笛卡尔积的子查询,最有趣的是您可以将其加一(然后产生排名编号)。

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 Demo

【讨论】:

  • 哇...,它工作得很好,谢谢...约翰
猜你喜欢
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 2011-06-18
  • 2020-03-31
  • 2021-09-23
  • 2010-09-22
  • 1970-01-01
  • 2012-09-13
相关资源
最近更新 更多