免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7709 | 回复: 8
打印 上一主题 下一主题

【已解决】请问按某字段分组后,怎么每组取100条数据? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-14 18:14 |只看该作者 |倒序浏览
本帖最后由 qmqpfi 于 2012-08-27 11:18 编辑

基本表结构
table
id   shopid
1    10001
2    10002
……
……
98  20001
99  20002

其它的字段都是一些修饰性的内容。

-------------------

现在想按 shopid 前 3 位分组后,每个分组取 100 条数据。

当前使用方法:
select substr(shopid,1,3) as newshopid from table group by newshopid;

// 然后在 php 中 foreach 遍历每一个 newshopid 查询:
select * from table where shopid like '{$newshopid}%' order by id desc limit 0,100;

想学习一下更加厉害的 SQL,请问可以一条 SQL 就可以达到这样的查询要求吗?
谢谢



-----------------------------
解决办法:
采用了 #4楼 的办法,其它楼的参考资料也非常好,好好学习一下
谢谢各位~

select *
from tb A
where 100>=(select 1 from tb B where A.substring(shopid,1,3)= B.substring(shopid,1,3) and A.id<B.id)

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
2 [报告]
发表于 2012-08-14 18:32 |只看该作者
这个需求简单的说就是 group + top 100
推荐一篇文章: http://code.openark.org/blog/mys ... n-records-per-group

论坛徽章:
0
3 [报告]
发表于 2012-08-15 10:10 |只看该作者
回复 2# cenalulu

这文章太高端了,只能依稀猜个大意,我再好好看几遍。
非常谢谢


   

论坛徽章:
0
4 [报告]
发表于 2012-08-15 11:23 |只看该作者
select *
from tb A
where 100>=(select 1 from tb B where A.substring(shopid,1,3)= B.substring(shopid,1,3) and A.id<B.id)

论坛徽章:
0
5 [报告]
发表于 2012-08-15 12:47 |只看该作者
oracle有row_number()
这是mysql的替代方法:
http://www.mysqlops.com/2011/04/ ... 8A%9F%E8%83%BD.html
按他里面的解决方法在添加条 rank <= 100 应该就行了。

论坛徽章:
0
6 [报告]
发表于 2012-08-27 11:15 |只看该作者
回复 4# rucypli


一直给忘了这贴子。
非常感谢~~

我现在就是这个解决了,谢谢!

论坛徽章:
0
7 [报告]
发表于 2012-08-27 11:16 |只看该作者
回复 5# joker_buggy


非常好的参考资料~
学习了~~
谢谢~~

论坛徽章:
1
双鱼座
日期:2014-07-25 11:32:13
8 [报告]
发表于 2012-08-31 11:10 |只看该作者
你好啊,请问下能解释下这个sql语句的逻辑在哪里吗?

我自己也建了一个表,也试着运行了下,实在没有分析出你的这个sql的逻辑所在。。谢谢回复 4# rucypli


   

论坛徽章:
0
9 [报告]
发表于 2012-09-04 11:26 |只看该作者
回复 8# 秦风笛韵1

没啥逻辑  看多了就习惯了

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP