当前位置:   article > 正文

Mysql order by limit 分页查询结果有重复的数据_limit 2,10 有两页数据一样

limit 2,10 有两页数据一样

今天遇到一个问题,mysql分页查询的结果第一页和第二页有重复的数据,看了一下sql

  1. -- 第一页
  2. SELECT * FROM table1 WHERE col=0 ORDER BY col2 DESC LIMIT 10
  3. -- 第二页
  4. SELECT * FROM table1 WHERE col=0 ORDER BY col2 DESC LIMIT 10,10

没有问题啊,sql就应该是这样的,表里面有主键,不应该出现两条一样的数据

看了半天,分析了半天,突然觉得会不会是mysql有bug呢

网上一搜,发现,有人说mysql5.5版本以前都没有问题,5.6改版了,使用priority queue优化

然后导致,如果orderby的字段的值是一样的话,它就会随便返回一条数据,就会导致第一页和第二页的数据可能会重复

解决方案:

1. orderby的字段加一个其他不重复的字段,比如主键

这个可行,我试了

SELECT * FROM table1 WHERE col=0 ORDER BY col2 DESC,id LIMIT 10

 2. 给orderby字段加索引

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/139370
推荐阅读
相关标签
  

闽ICP备14008679号