MYSQL 使用ORDER BY 和 limit 连用的隐藏bug-安徽诺千科技有限公司

MYSQL 使用ORDER BY 和 limit 连用的隐藏bug

童海兵 2018-03-01 4895 次

身为一个php的开发者,使用数据库是必不可少的。我们日常会用的一些数据的查询啊,但是因为有的表的数据太大 就必不可少的需要进行limit函数的使用。当然 单纯的limit使用没有任何的问题,可以大胆的使用。但是在和 ORDER BY一起连用的时候 在某些特殊的情况下就会出现一些错误。就是在ORDER BY后 有多个值,这种情况下再使用limit 就可能会出现数据重复的问题。

造成这种问题的原因是因为ORDER BY过后的值,是随机的,依赖于对应的执行计划然后返回。而limit满足后就直接返回不会对剩余的进行排序。所以会出现数据重复的问题。

 

看实例:

1.png

 

这个有 18条数据;其中 18号 有11条数据;(没有问题)

 我们拆分查看;

 

2.png

 

3.png

 

4.png

 

其中有三条重复的数据,所以这里就会隐藏一个bug。

处理方法: 增加一个ORDER BY 排序(就是保证同一个排序条件的值 要小于 limit的值就好 比如id,这个可以具体的对待)。



 

 

 

 


扫二维码关注诺千科技
  • 安徽诺千科技有限公司
  • 19909697910 / 15656989941
  • 0551-65285599 / 0551-65428099
  • 330592165
  • http://www.nuo1000.com/
  • 地址:安徽省合肥市高新区创新大道2700号路歌大厦A座6楼
关键词   数据库 limit order by
分享 0

免费咨询

CONTACT NUOQIAN

如果你认同“术业有专攻”的理念,请给我们留言,告知你的需求,
我们会提供专业的互联网解决方案。

您可提交您的疑问或直接咨询~




您也可以直接咨询

15148978978  /  15148978978  /  15148978978