如果数据量比较小的话,可以使用SQL内连接进行实现;
数据量比较大的时候,这种方法就消耗资源就比较大,不推荐
当然可以;
eg:获取根据name分组的前10条A/B表的关联数据;
select * from A a join B b on a.id = b.aid group by a.name limit 0,10;
数据量大的话,可以尽量查询需要的字段,替代*。外键索引、组合索引、或者分库分表来解决。
如果我没有理解错的话,你上面给出的例子,只能够做到总的显示10条数据,但是如果我的需求是每个分组10条数据呢?
@Mr_伍先生: 你的最后一句没看懂、似乎跟上面问题有点不一致。
@Ctrl`: 那我重新描述一下,假如一个表中有一个属性字段,我们按照这个属性字段分组,每组里面取前三条数据。
比如,有一张统计人身高的表,中间有年龄(17/18/19/20)、身高,如果我想知道每个年龄升高的前3条数据呢?而不是总的三条数据
@Mr_伍先生:
参考下:https://blog.csdn.net/yige9394/article/details/79481706
“按name分组取最大的两个(N个)val” 处。应该能满足你的需求。不过效率方面就要测试下了..
@Ctrl`: 这个方法之前自己写出来过,但是效率低的惊人。因为这种做法相当于内连接,查询的次数相当于n*n,如果这个n>10000的话,不敢想象,之前自己测试的查询结果大概需要好几秒,太慢了
@Mr_伍先生: 那就坐等大佬们来分析分析吧,我也学习一下
数据不大情况下,可以直接分组