Mysql group by top N的问题
2013-12-13 14:53
411 查看
http://sqlfiddle.com/#!2/4c0a5/32
>>>>> 建表
create table mytable
(
person varchar(10),
`group` int,
age int
);
insert into mytable values
('Bob', 1, 32),
('Jill', 1, 34),
('Shawn', 1, 42),
('Jake', 2, 29),
('Paul', 2, 36),
('Laura', 2, 39);
>>>> 查询
set @num := 0, @group := '';
select person, `group`, age
from
(
select person, `group`, age,
@num := if(@group = `group`, @num + 1, 1) as row_number,
@group := `group` as dummy
from mytable
order by `Group`, Age desc
) as x where x.row_number <= 2;
===== http://www.2cto.com/database/201309/247468.html
在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,mysql暂时不支持row_num.那么如何来完成这个需求呢?
例如:
表中的数据:
?
期望的结果:
方式一:借鉴oracle中row_num的思想,在sql中增加伪列.
?
方式二:利用关联子查询
?
>>>>> 建表
create table mytable
(
person varchar(10),
`group` int,
age int
);
insert into mytable values
('Bob', 1, 32),
('Jill', 1, 34),
('Shawn', 1, 42),
('Jake', 2, 29),
('Paul', 2, 36),
('Laura', 2, 39);
>>>> 查询
set @num := 0, @group := '';
select person, `group`, age
from
(
select person, `group`, age,
@num := if(@group = `group`, @num + 1, 1) as row_number,
@group := `group` as dummy
from mytable
order by `Group`, Age desc
) as x where x.row_number <= 2;
===== http://www.2cto.com/database/201309/247468.html
在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,mysql暂时不支持row_num.那么如何来完成这个需求呢?
例如:
表中的数据:
?
?
?
相关文章推荐
- Mysql group by top N的问题
- Mysql group by top N的问题
- mysql group by排序问题
- mysql GROUP BY 与 ORDER BY数据排序问题
- 转摘之Mysql中Group by子句结合count使用的效率问题
- linux上,mysql使用聚合函数group by 时报错:SELECT list is not in GROUP BY clause and contains nonaggre的问题
- mysql 新版本出现group by 语句不兼容问题
- MySql 数据库group by 的用法,order by 嵌套使用。优化问题
- MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究
- mysql group by问题
- mysql和sqlserver的order by 和group by和distinct引起的兼容性问题 max函数解决
- 深入解析mysql中order by与group by的顺序问题
- Mysql group by 排序问题
- mysql :group by 与order by 共同使用时排序问题,小心utf8的排序
- mysql5.7 group by 查询问题
- Mysql中Group by子句结合count使用的效率问题
- Mysql group by 排序问题
- MYSQL中查询TOP N的问题
- MySQL中无GROUP BY直接HAVING的问题【转】
- Mysql升级到5.7后遇到的group by查询问题解决