MySQL 中 order by .. limit .. 查询结果中相同数据在不同页中重复出现
解决方法#
MySQL 出于效率考虑,order by col1, col2 语句用于排序时,并不负责关心 col3, col4 … 的值。也就是同样的 col1, col2 的行数据,在limit row_count 的结果集中不负责 col3, col4 … 的排序(且返回值不确定),这是一个很自然的事情。侧面也反映了MySQL 会使用不稳定的排序算法。
在上述场景中,score字段存在大量相同的值。当排序过程中存在相同的值且没有其他排序规则时,mysql 返回的结果是不确定的,可能每次返回的结果的顺序都不一样(如果发现每次执行都返回一样的数据,可能是被mysql查询缓存了)。
解决方法:排序中存在相同的值时,需要再指定一个排序规则,通过这种排序规则不存在二义性,比如上面可以再加上id升序。
参考:
https://www.cnblogs.com/FengZeng666/p/17490968.html
https://blog.csdn.net/m0_73774439/article/details/139006799
https://www.cnblogs.com/muyarn/p/10941910.html