在mysql8查询中使用ORDER BY结合LIMIT时,分页查询时出现后一页的数据重复前一页的部分数据。

news/2025/3/26 4:58:08/

这里写目录标题

  • 问题描述:
  • 问题模拟:
  • 原因分析
  • 问题解释
  • 问题解决
  • 验证
  • 官方文档支持

问题描述:

在mysql8查询中使用ORDER BY结合LIMIT时,分页查询时出现后一页的数据重复前一页的部分数据。

问题模拟:

  • 表table_lock_test(忽视表名)中的字段及数据如下,
    在这里插入图片描述
    表中总共14条数据,其中11条数据的version列的值是相同的!

  • 使用ORDER BY结合LIMIT进行分页查询,查询第1、2页:(每页显示7条),进行对比

SELECT * FROM table_lock_test ORDER BY `version` DESC LIMIT 7;
SELECT * FROM table_lock_test ORDER BY `version` DESC LIMIT 7,7;

对比结果如下:
在这里插入图片描述

原因分析

  • 看如下两个查询
  1. 根据version列排序,查询前10条数据
    在这里插入图片描述

  2. 根据version列排序,查询前5条数据
    在这里插入图片描述

  3. 根据以上对比,可大胆猜测,ORDER BY与LIMIT结合使用时,如果被排序ORDER BY的列的值相同,那么它们的查询结果的顺序,可能不固定。

问题解释

当查询第2页数据时,id为14 (- HJUIO- 4)的数据的顺序并不在第3的位置,而是出现在了第11的位置,作为第2页的数据再返回了, 这时结合第1页的查询数据就出现了1条重复数据; 同时,必然会出现重复多少条就会有多少数据凭空消失,结合上面的对比图可知这里消失的是id 为 8 的数据。

问题解决

如果排序ORDER BY列有相同的值的时候,再添加一个索引 INDEX列,如主键列一起排序就不会出现上面的数据重复、数据消失的问题了

验证

  • 使用ORDER BY结合LIMIT进行分页查询,查询第1、2页:(每页显示7条),进行对比, 排序时增加INDEX列,这里增加id
SELECT * FROM table_lock_test ORDER BY `version` DESC,id LIMIT 7;
SELECT * FROM table_lock_test ORDER BY `version` DESC,id LIMIT 7,7;

对比结果如下:
在这里插入图片描述

官方文档支持

Msql8操作手册-mysql-refman-8.0-en 第8章-8.2.1.19
在这里插入图片描述


http://www.ppmy.cn/news/1167196.html

相关文章

21天打卡进阶Python基础操作

python21天打卡day3-python数据类型 #int a2 print(a) print(type(a)) #float a2.2 print(a) print(type(a)) #string anihao print(a) print(type(a)) #list a[1,2,3,4] print(a) print(a[0]) print(type(a)) #元组 a(1,2) print(a) print(type(a)) #字典dict a{name:yangyal,…

怎么恢复移走的u盘数据?可以尝试这三种方法

当意外移走U盘上的数据时,我们常常会感到焦虑和失望,特别是当这些数据对我们仍然重要时。不过,您不必完全放弃,因为本文将介绍一些方法,以帮助您恢复U盘上的重要数据。 图片来源于网络,如有侵权请告知 移走…

小程序之后台数据动态交互及WXS的使用 (5)

⭐⭐ 小程序专栏:小程序开发专栏 ⭐⭐ 个人主页:个人主页 目录 一.前言 二.后台数据交互 2.1 准备工作 2.1 前台首页数据连接: 三.WXS的使用 今天就分享到这啦!!! 一.前言 本文章续前面的文章的前端界面…

基于YOLOv8的多目标检测与自动标注软件【python源码+PyqtUI界面+exe文件】【深度学习】

基本功能演示 摘要:YOLOv8是YOLO系列最新的版本,支持多种视觉任务。本文基于YOLOv8的基础模型实现了80种类别的目标检测,可以对图片进行批量自动标注,并将检测结果保存为YOLO格式便于后续进行其他任务训练。本文给出完整的Python实…

重磅发布!RflySim Cloud 智能算法云仿真平台亮相,助力大规模集群算法高效训练

RflySim Cloud智能算法云仿真平台(以下简称RflySim Cloud平台)是由卓翼智能及飞思实验室为无人平台集群算法验证、大规模博弈对抗仿真、人工智能模型训练等前沿研究领域研发的平台。主要由环境仿真模块、物理效应计算模块、多智能体仿真模块、分布式网络…

两周面试,遇到的那些奇事

最近两周在帮别的部门面试,期间遇到了许多典型案例。有的真正做到了学习一年,重复十年;有的一手好牌,打的稀碎;有的连基本的社交礼仪都不懂的…… 这里将这些案例和思考拿来分享,也是想让目前还从事软件行…

vue3后台管理系统之顶部tabbar组件搭建

1.1静态页面搭建 <template><div class"tabbar"><div class"tabbar_left"><!-- 面包屑 --><Breadcrumb /></div><div class"tabbar_right"><!-- 设置 --><Setting /></div></di…

Valgrind——c/c++内存检测工具

文章目录 前言检测说明泄露类型说明memcheck指令references 前言 Valgrind 是一个用于构建动态分析工具的检测框架。 Valgrind包含了可以自动检测多种内存管理和线程错误的工具&#xff0c;并对程序进行详细的分析。而且&#xff0c;还可以使用Valgrind来构建新工具。 检测说…