从表中选择最多n条记录,每组最多一条记录

时间:2013-06-28 03:54:02

标签: mysql sql group-by

我有一个包含简单架构的表:user_idscore,我想提取分数最高的n条记录,这样每个user_id只能代表一次。

这个问题类似于Get top n records for each group of grouped results,除了每组不需要n个代表,我需要n个代表,每组最多一个记录。

因此,如果我正在寻找n = 3,请运行查询:

user_id | score
      1 |    10
      2 |     9
      1 |    11
      2 |     8
      3 |     8
      4 |    12

应该产生:

user_id | score
      4 |     12
      1 |     11
      2 |      9

1 个答案:

答案 0 :(得分:2)

SELECT user_id, MAX(score) FROM table GROUP BY user_id ORDER BY MAX(score) DESC LIMIT 3;
相关问题