专栏名称: 51CTO技术栈
有趣 | 有料 | 有内涵,为您提供最优质的内容,愿我们一起悦享技术,成就人生。
目录
相关文章推荐
码农翻身  ·  穷人需要投机,别迷信长期主义 ·  昨天  
码农翻身  ·  11w*14薪,进DeepSeek了! ·  2 天前  
OSC开源社区  ·  地表最强「开源版PS」——GIMP ... ·  5 天前  
程序员的那些事  ·  年薪154w!又一新兴岗位崛起!这才是程序员 ... ·  4 天前  
51好读  ›  专栏  ›  51CTO技术栈

切记!MySQL中order by与limit不要一起用!

51CTO技术栈  · 公众号  · 程序员  · 2021-01-12 18:05

正文

送福利啦

关注 鸿蒙技术社区 ,回复 【鸿蒙】 价值 399元 的鸿蒙 开发板套件 (数量有限,先到先得) ,还可以 免费下载 鸿蒙 入门资料


👇 扫码 立刻关注 👇

专注开源技术,共建鸿蒙生态


切记!MySQL 中 ORDER BY 与 LIMIT 不要一起用,有大坑......


图片来自 Pexels


现象与问题


ORDER BY 排序后,用 LIMIT 取前几条,发现返回的结果集的顺序与预期的不一样。


下面是我遇到的问题:



可以看到,带 LIMIT 与不带 LIMIT 的结果与我预期的不一样,而且“很不可思议”,真是百思不得其解。


后来百度了一下,如果 order by 的列有相同的值时,MySQL 会随机选取这些行,为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可能减少重复的概率。


于是,改成 order by status,id:

问题虽然是解决了,但还是看看官方文档上怎么说的吧!


LIMIT 查询优化







请到「今天看啥」查看全文