今天写项目遇到一个关于limit offset的问题记录一下

  # limit 50
  select * from tb order by created_at desc limit 50 offset 0;
  select * from tb order by created_at desc limit 50 offset 50;
  select * from tb order by created_at desc limit 50 offset 100;
  select * from tb order by created_at desc limit 50 offset 150;
  select * from tb order by created_at desc limit 50 offset 200;
  # limit 100
  select * from tb order by created_at desc limit 100 offset 100;
  select * from tb order by created_at desc limit 200 offset 200;

这里遇到一个问题limit 50limit 100 取出的数据不一致、而且limit 50 offset xx 会取出原来重复的数据

解决办法

order by created_at desc 后面加一个带顺序的索引例如id

  select * from tb order by created_at desc , id desc limit 50 offset 0;

具体原因【待证实】:
目前猜测是mysql 取出对应limit的数据后进行排序,由于created_at是秒单位,所以在同一时刻会有很多数据,mysql每次进行排序的时候就可能会出现重复的状况

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国庆第二天,今天嗨翻模式的开启就等室友的同学来了再说吧,在这之前,先来一波笔记 查询真正重要的是响应时间,查询包含...
    小炼君阅读 5,704评论 0 50
  • MySQL不权威总结 欢迎阅读 本文并非事无巨细的mysql学习资料,而是选择其中重要、困难、易错的部分进行系统地...
    liufxlucky365阅读 7,582评论 0 26
  • 数据库基础知识 数据库客户端MySQL作为数据库服务器来运行,任何满足mysql通信规范的软件都可以作为客户端来连...
    littlexjing阅读 4,668评论 0 2
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 9,259评论 0 8
  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 6,215评论 0 4

友情链接更多精彩内容