您的位置:首页 > 数据库 > SQL

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中增加伪列.

?
方式二:利用关联子查询

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: