前言
ORDER BY排序后,用LIMIT取前几条,发现返回的结果集和LIMIT前的不相同。
问题复现:
SQL语句如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1048a22d60aa4e85b95ec31bdbd7e434.png)
- 排序前查询如下图1:
![图一](https://img-blog.csdnimg.cn/d4a03cb8eda94641aa4b7e9636c2e7c9.png)
- 按照sort递增排序后结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/fac7e2f6ec0c42c0a1a3ebfeb5b4540e.png)
- limit限制查询展示的记录数量之后:如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/6fe9c7dbe1a540df95875c629016b000.png)
可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,
后来百度了一下,如果order by的列有相同的值时,mysql会随机选取这些行,
解决办法:
为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可能减少重复的概率!
于是,改成 order by status, id如下:成功解决!
![在这里插入图片描述](https://img-blog.csdnimg.cn/4d67e956c9c84487945dff77e649b21a.png)