MySQL如何获取前n组?

标签 mysql group-by

对于下表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/

相关文章:

mysql - 如何在此 MySQL 语句中将子主题分组为主题?

python - 如何按类标签或任何特定列对 Pandas 数据框进行排序/分组

MySQL:按日期范围分组?

MySQL 如何在一个查询中返回 COUNT 总数以及使用 GROUP BY 的 COUNT

MySQL 使用行计数和分组进行选择

Mysql计数时得到零值

mysql - INSERT INTO 如果 id 不存在,如果存在则忽略,如果任何字段不同则插入新的

mysql - 字符串的正则表达式

php - 在 PhoneGap 应用程序上显示 SQL 数据 - 可以使用 URL 吗?

mysql - CREATE TABLE new_table_name LIKE old_table_name with old_table_name's AUTO_INCREMENT 值