对于下表TestTable:
| Id | Name | Flags |
|----|-------|-------|
| 1 | name1 | 1 |
| 2 | name2 | 1 |
| 3 | name3 | 2 |
| 4 | name4 | 2 |
| 5 | name5 | 3 |
如何按标志分组并返回前 2 组。这就是说我应该返回行:
| 1 | name1 | 1 |
| 2 | name2 | 1 |
| 3 | name3 | 2 |
| 4 | name4 | 2 |
我尝试过这个:
select *
from TestTable
group by Flags
order by Flags
limit 0,2
但是查询仅返回 2 行。
最佳答案
您可以使用子查询仅获取前两个标志,并将其连接起来:
select t.id, t.name, t.flags
from testtable t
inner join (select distinct flags
from testtable
order by 1
limit 2) filter
on filter.flags = t.flags;
查看它在 regtester.com 上运行
关于MySQL如何获取前n组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44434205/