赞
踩
今天遇到一个问题,mysql分页查询的结果第一页和第二页有重复的数据,看了一下sql
- -- 第一页
- SELECT * FROM table1 WHERE col=0 ORDER BY col2 DESC LIMIT 10
- -- 第二页
- 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字段加索引
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。