前言
ORDER BY排序后,用LIMIT取前几条,发现返回的结果集和LIMIT前的不相同。
问题复现:
SQL语句如下:

- 排序前查询如下图1:

- 按照sort递增排序后结果如下:

- limit限制查询展示的记录数量之后:如下

可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,
后来百度了一下,如果order by的列有相同的值时,mysql会随机选取这些行,
解决办法:
为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可能减少重复的概率!
于是,改成 order by status, id如下:成功解决!
