怎么数据库的分页的不准了?对时间做查询分页的一定要加上排序呀!

怎么数据库的分页的不准了?对时间做查询分页的一定要加上排序呀!

  • 我们来观察下以下sql 是否存在问题
SELECT id, orderNo, addTime
FROM deal_tab
ORDER BY addTime DESC
LIMIT 120

SELECT *
FROM deal_tab where pay_time >="2021-01-01" and  pay_time < "2021-03-01"
LIMIT 120
  • 以上的sql 在查询过程中。总数可能与实际出现的数据内容可能会对不上

  • 并且第二个sql语句没有使用排序。实际是用的pay_time来进行排序的,也是不可取的。切记一定要在sql上加下指定的排序。

  • 分析:在系统中,在新增数据比较多的表中,有可能会出现很多相同的时间。如果使用时间排序,Mysql无法判断时间先后,也无法明确两页分隔的界限,那么在分页的过程中可能会导致某一笔或者好几笔数据没被分页出来的现象

  • 解决办法:在对可能存在重复数据的字段进行排序的时候,请增加一个辅助字段来保证每次查出来的数据顺序是一致的。且是递增的。来保证数据的完整性

SELECT id, orderNo, addTime
FROM deal_tab
ORDER BY addTime DESC, id
LIMIT 120

SELECT *
FROM deal_tab where pay_time >="2021-01-01" and  pay_time < "2021-03-01" order by id asc
LIMIT 120
posted @   云扬四海  阅读(538)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示