orcale分页排序错乱问题
问题
本地使用以下sql进行查询没有问题,在测试环境下出现了分页排序错乱,有的数据第一页有,第二页还有,有的数据每一页都找不到,但是把每页记录数调大就正常了。
select p.id,p.name,p.submit_date from la_protocol p order by p.submit_date desc
原因
order by字段值不唯一造成分页记录混乱,也就是说我用 p.submit_date desc排序,但是这个字段的值不是唯一的。。在这种情况下oracle会进行随机的排序,这时候就会出现这个问题了。
解决
当遇到这种排序字段不唯一且可能出现大量重复的情况下,在排序的时候增加一个唯一字段,最好是id。
如把上面sql改为
select p.id,p.name,p.submit_date from la_protocol p order by p.submit_date desc,p.id