mysql group by导致分页重复数据问题

mysql group by导致分页重复数据问题,第1张

由于group 不用会导致分页有重复数据,需要外面再加一层查询,正确示例:

SELECT a.* FROM (select company_id

,COALESCE(sum(total_amount),0) total_amount

from t_statistics

group by company_id

order by batch_date desc) a

LIMIT 0,20

当业务上按照月份分表,但是前端h5需要分页展示,小伙伴们不知有没有遇到这个这个需求最后怎么完成的。

我这里想了一个解决思路,可能还不完善,希望能抛转引玉。

1、入参pageNo 为页号码,如果为1那么就是第一页。pageSize 可以是入参也可定死,这里定死10条。Limit 是数据偏移标记,根据入参pageNo 计算出来的,Limit=(pageNo-1)*pageSize。假设A表有41条数据符合,B表有51条数据符合,如下图。

有几种种情况   1.如果limit<A表41条 那么需要从A表中取数据,(1)如果Limit+pageSize<Count直接获取数据即可(2)如果Limit+pageSize>Count,那么需要从A 表取部分数据从B表取一部分数据。

1.如果limit>A表41条  那么需要从B表取数据,如果B数据依然不足,那么重复以上的步骤。如下图

先看一下分页的基本原理(我拿的是CSDN那个百万级数据库来测试!):SELECT * FROM `csdn` ORDER BY id DESC LIMIT 100000,2000耗时: 0.813ms分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7492509.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存