我有一张桌子。表结构就像这样
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。
任何人请帮助我。
答案 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
如果您遇到困难,请提供您对输出的期望。