例如给定这张表
编号 | 类别
1 | 10
2 | 10
3 | 10
4 | 10
5 | 20
6 | 20
7 | 20
8 | 30
9 | 30
10 | 30
11 | 30
我们想从每个类别中获取前 2 个小 id,也就是我们需要这个结果
1
2
5
6
8
9
我写了这个查询和他的作品
SELECT MIN(id) AS id FROM mytable GROUP BY category
UNION
SELECT MIN(id) AS id FROM mytable WHERE
id NOT IN (SELECT MIN(id) AS id FROM mytable GROUP BY category) GROUP BY category
ORDER BY id
但这里有一个问题,如果我们想要每个类别的前 2 个 id,这可行,但如果我们想要每个类别的更多第一个小 id(例如 7),查询将非常困难。有人有想法,如何使这变得容易?