MySQL如何获得前n组?

时间:2017-06-08 11:16:31

标签: mysql group-by

对于下表TestTable:

| Id | Name  | Flags |    
|----|-------|-------|    
| 1  | name1 |   1   |    
| 2  | name2 |   1   |    
| 3  | name3 |   2   |     
| 4  | name4 |   2   |    
| 5  | name5 |   3   |

如何按标志分组并返回前两组。也就是说我应该返回行:

|  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行。

1 个答案:

答案 0 :(得分:1)

您可以使用子查询仅获取前两个标志,并加入:

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

上查看它