当前位置: 首页 > 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

相关文章:

  • 嵌入式硬件实战提升篇(三)商用量产电源设计方案 三路电源输入设计 电源管理 多输入供电自动管理 DCDC降压
  • MySQL常见面试题(二)
  • 新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议
  • 企业品牌曝光的新策略:短视频矩阵系统
  • mysql一个事务最少几次IO操作
  • WPF+MVVM案例实战与特效(三十)- 封装一个系统日志显示控件
  • 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人才生态大会