当前位置: 首页 > article >正文

mysql order by后进行limit分页查询出现重复数据

1、场景:管理台列表查询莫名出现重复数据,第一页的最后几条数据在第二页的最上面也出现了。

select c.* from (select a.* from a where xxx union select b.* from b where xxx ) c where xxx order by c.acct_date desc limit pageSize,pageNum

2、排查:查看SQL语句,里面用到了一个union,然后又用到了order by日期字段,mapper层又用来mybatis的分页插件pageHelper。经过查询发现是因为order by后的字段不是唯一字段,导致分页查询出现错乱。(具体底层原因有兴趣的可以自行查看)

3、解决:order by日期后,加上一个能确定唯一的字段,如id之类的。测试后发现确实解决问题。

select c.* from (select a.* from a where xxx union select b.* from b where xxx ) c where xxx order by c.acct_date desc,c.id limit pageSize,pageNum

关于mysql中order by的解释:


如果order by的字段有多个行都有相同的值,mysql是会随机的顺序返回查询结果的,具体依赖对应的执行计划。也就是说如果排序的列是无序的,那么排序的结果行的顺序也是不确定的。

上面场景的排序字段是按照日期字段进行排序的,因此分页出现了部分重复数据。


http://www.kler.cn/a/420635.html

相关文章:

  • shell脚本30个案例(五)
  • Spring AI 框架介绍
  • WuCup网络安全技能大赛WP
  • Java 单例模式:深度解析与应用
  • mysql线上问题集合
  • Stable Diffusion 3 论文
  • 淘宝商品数据获取:Python爬虫技术的应用与实践
  • 大数据营销
  • Flink四大基石之窗口(Window)使用详解
  • 如何实现人机环境之间动态交互的事实与价值编排组合
  • 前端面试热门题(二)[html\css\js\node\vue)
  • Docker 容器隔离关键技术:SELinux
  • el-table 组件二次封装(vue2)
  • 【MATLAB源码-第230期】基于matlab的32QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。
  • 机器学习算法(六)---逻辑回归
  • Qt Serial Bus 前置介绍篇
  • ​导游|基于SprinBoot+vue的在线预约导游系统
  • 【Django-xadmin】
  • Git命令大全(超详细)
  • 技术创新与人才培养并重 软通动力子公司鸿湖万联亮相OpenHarmony人才生态大会