1

我有一张桌子。表结构是这样的

ID、用户 ID、考试 ID、分数、时间、日期
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。

任何人请帮帮我。

4

1 回答 1

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

如果您从这里卡住,请提供您期望的输出。

于 2013-09-26T21:29:23.573 回答