我有一个包含简单架构的表:user_id
,score
,我想提取分数最高的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
答案 0 :(得分:2)
SELECT user_id, MAX(score) FROM table GROUP BY user_id ORDER BY MAX(score) DESC LIMIT 3;