MySql单表查询分组之后每组指定个数的数据

最近帮朋友解决一个问题,需求是这样的:
在查询某表数据时需要根据表中某列进行分组且每组取前指定条数的数据,然后根据某列(id)进行排序
在网上找了很多资料,都是可以实现但是效率很慢,经过探讨写出了下面的查询SQL,十万条数据执行耗时在1秒以内(约0.8秒)

SET @codeum := ‘’;
SET @csum := 0;
SELECT * from
(
SELECT si_a.*,
IF(@codeum <> si_a.分组列名 , @csum := 0 , (@csum := @csum + 1) ) AS icount ,
IF(@codeum = si_a.分组列名 , @codeum := si_a.分组列名 ,@codeum := si_a.分组列名) as codes
FROM 表名 si_a ORDER BY si_a.分组列名,排序列名 DESC
)
si_b where si_b.icount < 指定条数

记录一下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值