- 论坛徽章:
- 0
|
本帖最后由 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) |
|