我正在尝试获取给定 GROUP BY 条件的 TOP X 结果。我目前正在使用这样的东西:
SELECT * FROM
(SELECT id
FROM myTable
WHERE id IN (x1, x2, ..., xn) GROUP BY id ORDER BY grade DESC
) t1
INNER JOIN myTable t2 ON t2.id=t1.id
id 是一个非唯一的 INT 索引字段,每个值有多个行。
这将为每个 ID 返回我,即成绩最好的行。如何将其转换为返回每个 id 的 TOP X 结果?
例如,对于以下数据
id grade
2 10
2 13
2 15
3 20
4 16
4 55
4 45
4 35
4 25
5 1
假设 TOP X 中的 X 为 2,我想获得以下行:
id grade
2 15
2 13
3 20
4 50
4 40
5 1