mysql group by top_Mysql group by top N的问题 | 学步园

>>>>> 建表

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;

在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,mysql暂时不支持row_num.那么如何来完成这个需求呢?

例如:

表中的数据:

期望的结果:

方式一:借鉴oracle中row_num的思想,在sql中增加伪列.

方式二:利用关联子查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值