特定の 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