一个实例是 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 查询确没有这种情况
一个实例是 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 Mar 13, 2024 via Android
按 date 排序 第 10 和 11 是相同的 date ,有唯一键的话,加上作为排序键
|
3
kcccc Mar 13, 2024 请看官方文档中的描述
https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html 如果多行在列中具有相同的值 ORDER BY ,则服务器可以自由地以任何顺序返回这些行,并且可以根据整体执行计划以不同的方式返回这些行。 你的数据中 date 有相同的值,而你只按 date 来排序。 |
4
zhongpingjing OP @kcccc 确实是,感谢
|
5
xwg999 Mar 13, 2024
db 99%不会错
|
6
sampeng Mar 13, 2024
一边进来一边想不会是有 group 和 order by 吧?。。一看果然是。。
|
7
siweipancc Mar 13, 2024 via iPhone
一般最后要加上 id 。不然会被提 bug
|
8
wuhao1 Mar 13, 2024
|