SQL order by limit分页数据重复问题
2022-09-22 22:47:20

直接描述现象:
SQL_A

1
2
3
4
5
6
7
8
9
10

SELECT
workername,
create_time
FROM
`table_xx`
ORDER BY
create_time DESC
LIMIT 0,
10

SQL_B

1
2
3
4
5
6
7
8
9
10

SELECT
workername,
create_time
FROM
`table_xx`
ORDER BY
create_time DESC
LIMIT 10,
20

执行结果:
SQL_A
image.png

SQL_B
image.png

也就是说同样的数据,出现经过分页出现在了两个不同的页上。

解决方法:
增加 order by 条件

原因:
按理来说,MySQL的排序默认情况下是以主键ID作为排序条件的,在MySQL 5.6的版本上,优化器在遇到order by limit语句的时候,做了一个优化。导致了这问题。

参考连接:https://www.jianshu.com/p/544c319fd838