如何获得表格的最后10个数据的排名

时间:2013-09-26 20:21:13

标签: mysql

我有一张桌子。表结构就像这样

ID, UserId, Exam Id, Score, Timing, Date
1,  1,      2,       4,     3.5,    2013-03-05
2,  2,      2,       3,     2.5,    2013-03-05
3,  3,      3,       5,     1.5,    2013-03-05
4,  4,      2,       4,     3.5,    2013-03-05
5,  2,      4,       1,     4.5,    2013-03-05
6,  3,      2,       2,     5.5,    2013-03-05
7,  1,      1,       0,     2.5,    2013-03-05
8,  5,      3,       3,     1.5,    2013-03-05
9,  2,      2,       2,     3.5,    2013-03-05
10, 1,      2,       5,     5.5,    2013-03-05
11, 4,      1,       4,     4.5,    2013-03-05
12, 2,      2,       2,     2.5,    2013-03-05

现在我想显示最后5个考试成绩和个人考试的排名。

假设用户2参加考试ID为2的最后一次考试。因此,在该情况下,仅针对该考试显示用户2的职位。

同时,对于用户4的Id-11,它将显示考试1的位置。

和其他3个ID一样(10,9,8),我想通过1个查询完成所有这些。

排名标准是高分,低时间和低用户ID。

任何人请帮助我。

1 个答案:

答案 0 :(得分:1)

您希望使用唯一的UserId提取最近的五个考试,然后按照某些标准对它们进行排序?如果是这种情况,您可以使用子查询来获取此信息。我将进一步排序给你,但这是我认为你需要的开始和小提琴:http://sqlfiddle.com/#!2/8eecd/8

 SELECT * FROM TEST where ID IN
    (SELECT max(id) 
     FROM TEST 
     GROUP BY UserId) 
 ORDER BY id DESC 
 LIMIT 5

如果您遇到困难,请提供您对输出的期望。