一个实例是 aws 上的 RDS ,一个是本地,都是下面这条 sql
select
no,
date,
sum(amount) as amount
from
t
group by
no,
date
order by
date desc
LIMIT 10,10
结果查出来的数据不一致,有什么原因造成的吗。主要是 rds 查出来分页结果还是错的,有数据同时在LIMIT 0,10
和LIMIT 10,10
都出现了。本地 mysql 查询确没有这种情况
1
zhongpingjing OP 然后比较神奇的是,数据只有刚好 20 条时就会不一致,23 条时 rds 查询结果又是正确的
|
2
zjp 287 天前 via Android
按 date 排序 第 10 和 11 是相同的 date ,有唯一键的话,加上作为排序键
|
3
kcccc 287 天前 2
请看官方文档中的描述
https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html 如果多行在列中具有相同的值 ORDER BY ,则服务器可以自由地以任何顺序返回这些行,并且可以根据整体执行计划以不同的方式返回这些行。 你的数据中 date 有相同的值,而你只按 date 来排序。 |
4
zhongpingjing OP @kcccc 确实是,感谢
|
5
xwg999 286 天前
db 99%不会错
|
6
sampeng 286 天前
一边进来一边想不会是有 group 和 order by 吧?。。一看果然是。。
|
7
siweipancc 286 天前 via iPhone
一般最后要加上 id 。不然会被提 bug
|
8
wuhao1 286 天前
|