在进行数据分页查询的时候,对数据进行了排序操作后进行limit分页,使用的是mybatis的分页插件PageHelper,查出的数据是重复的,不准确的,一开始以为是分页插件使用错误的问题。
select * from 表名
order by created_time
limit 10
后面查阅文章得知,如果ORDER BY列中有多行具有相同的值,则服务器可以自由地按任何顺序返回这些行,并且根据总体执行计划的不同,返回方式可能会有所不同。换句话说,这些行的排序顺序相对于未排序的列是不确定的。
后对数据进行查看,created_time字段是空值,也就是重复的,所以查询出来的分页数据是错乱的。
加上了不重复的排序字段,主键id,查询结果与预期一致。
select * from 表名
order by created_time, t_id
limit 10
因此当查询分页数据不一致时,可以看看是否使用了order by排序,排序字段是否有多个重复值,如果重复可以再多根据一个字段进行排序。