公司用的是Mybatis,发现分页和排序时直接传递参数占位符用的都是 ,由于,由于,由于有SQL注入风险,要改为#,但是封装page类又麻烦,所以直接使用了 pageHelper 插件了,方便快捷,但是测试时发现数据有问题:

//第二页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC
LIMIT    5 , 5;//第三页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC
LIMIT    10 , 5//第四页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC
LIMIT    15 , 5

分页数量正常,但这3条SQL的结果集是一样的,第二第三第四页的数据,一模一样,我一脸懵逼,后来查了mysql官方文档发现,在mysql5.5版本之后,mysql针对排序有修改(5.5及之前版本不会):

If multiple rows have identical values in the ORDER BY columns, the
server is free to return those rows in any order, and may do so
differently depending on the overall execution plan. In other words,
the sort order of those rows is nondeterministic with respect to the
nonordered columns.

One factor that affects the execution plan is LIMIT, so an ORDER BY
query with and without LIMIT may return rows in different orders.

大概意思是 :一旦 order by 的 colunm 有多个相同的值的话,结果集是非常不稳定

那怎么解决呢,其实很简单,就是order by 加上唯一不重复的列即可,即在后面加上一个唯一索引就可以了,

ORDER BY idnumber DESC , id DESC

//第二页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC ,
id DESC
LIMIT    5 , 5;//第三页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC ,
id DESC
LIMIT    10 , 5//第四页
SELECT id, createtime, idnumber, mac FROM `tblmacwhitelist`
ORDER BY idnumber DESC  ,
id DESC
LIMIT    15 , 5

完美解决问题了。

Mysql分页order by数据错乱重复相关推荐

  1. ListView优化机制及滑动时数据时出现的数据错乱重复问题

    ListView优化机制及滑动时数据时出现的数据错乱重复问题 转载于:https://www.cnblogs.com/zhujiabin/p/5596998.html

  2. mysql 分页_百万数据下mysql分页问题

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 百万数据下mysql分页问题 (查看原文请点击本文末尾左下角: 在开发过程中我们经常会使用分 ...

  3. ListView优化机制及滑动时数据时出现的数据错乱重复问题 图片、checkBox等

    该篇内容主要是记录我在实际开发中遇到的ListView滑动时数据错乱的几种情况,以及解决方法.在进行ListView滑动时数据错乱问题讨论之前会对ListView所谓的<优化>进行说明.文 ...

  4. layui分页limit不显示_小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题...

    20大进阶架构专题每日送达 来源:www.jianshu.com/p/544c319fd838 进入主题前先插一下,当当优惠码福利来一波!当当全场自营图书5折,用优惠码:J2JYFK(长按复制),满2 ...

  5. mysql scrapy 重复数据_小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题...

    作者:猿码道http://www.jianshu.com/p/544c319fd838 0 问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的1 ...

  6. 小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:猿码道 www.jianshu.com/p/544c319fd838 0 问题描述 ...

  7. 解决mysql分页数据错乱问题

    今天同事遇到个麻烦的问题,写了一个分页的功能,结果查出来的数据竟然有重复,有些数据同时在相邻的两页出现了, 但是查询总数据不分页的时候又只有一条,这里主要是排序的问题,在mysql中用 order b ...

  8. mysql分页概念_MySQL学习笔记之数据定义表约束,分页方法总结

    本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法.分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能 ...

  9. mysql 分页 order_Mysql查询使用limit分页,同时使用order by可能产生的问题

    昨天遇到一个比较诡异的问题,在使用MySQL分页查询数据的时候, 有的数据明明数据库里有,但是就是查不出来,有的数据却反而会 重复出现. 这里面就涉及到一个MySQL自身的问题. 具体现象大概是: 当 ...

最新文章

  1. b样条曲面绘制 opengl_3dmax在曲面上如何绘制样条线,都在这里了
  2. Leetcode 252, 253. Meeting Rooms
  3. 通过SWD J-Link使用J-Link RTT Viewer来查看打印日志
  4. ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务
  5. 154 万 AI 开发者用数据告诉你,中国 AI 如何才能弯道超车?| 中国 AI 应用开发者报告
  6. 罗技 连点 脚本_罗技 G502 无线版体验:告别了线材,而且变得更轻了
  7. DBV命令行工具检测坏块
  8. cleanmymac2023免费版纯净mac电脑系统管家
  9. Mac 配置L2TP 隧道连接操作步骤
  10. 如何使用数据分析客户购买意愿
  11. LaTeX IEEE 模板 图片引用编号为大写罗马数字问题
  12. python轮转数组及nums和nums[:]的区别
  13. 鸿蒙系统最便宜的手机,鸿蒙手机6月2日上市 手机友商不大可能转投鸿蒙系统
  14. agc024F Simple Subsequence Problem
  15. 3dAPI的一些介绍
  16. YTU 3386 哈希查找2
  17. - java实现审核流程
  18. VS SDK更新问题(error MSB8036: 找不到 Windows SDK 版本10.0.14393.0)
  19. 1047: 奇数的乘积
  20. 石河子全国计算机报名系统入口,石河子雅思考试报名入口

热门文章

  1. 2022-2028年中国GPS导航行业投资分析及前景预测报告
  2. etcd 笔记(08)— 基于 etcd 实现分布式锁
  3. RabbitMQ 入门系列(1)— Ubuntu 安装 RabbitMQ 及配置
  4. Windows中配置java变量环境
  5. 智能物联网(AIoT,2020年)(下)
  6. 基于TensorRT的BERT实时自然语言理解(上)
  7. Geo-CNN的三维点云
  8. 2021年大数据Hadoop(二十九):​​​​​​​关于YARN常用参数设置
  9. Ubuntu 系统安装.deb安装包
  10. Android 按压效果的工具类