mysql5.7排序和分页出现重复数据

在MySQL5.7中,当使用LIMIT优化时,如果ORDER BY的字段存在相同值,返回结果可能不一致。文档指出,具有相同排序值的行顺序不确定。案例显示,由于create_datetime字段重复,导致分页查询出现重复数据。解决方法是在ORDER BY子句中增加唯一ID字段,确保分页顺序的确定性。
摘要由CSDN通过智能技术生成

场景

我们使用分页查询时候经常会遇到需要对某个或者某几个字段进行排序,在排序字段有相同值的情况下有可能最后的排序结果不是我们预期的样子,我们来看下一个例子。
在这里插入图片描述

在这里插入图片描述
表里面的creaet_datetime列的数据是有重复的,一般情况下我们分页的sql是这样的。
第一页
在这里插入图片描述
第四页
在这里插入图片描述
可以发现,id为8的这条数据出现在了第一页和第页当中,这样就不是我们预期当中的结果。
那这是为什么呢?

分析

在我们以往的经验和理解当中,这里应该是先进行order by排好序,然后再取对应的分页数据。其实在mysql5.7当中并不是这样的,通过查阅 mysql5.7的官方文档可以发现在mysql5.7当中会对limit优化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值