分页时order by的问题

      做了一个分页,按照取样时间排序。

Select * from (select ROWNUM RN,X.*
        from (
            select s.* from T_TEST_SAMPLE s
             
                
                    AND TRIM(s.sample_name) = #{qualityName,jdbcType=VARCHAR}
                
                
                    and SAMPLING_DATE >= #{begin,jdbcType=TIMESTAMP}
                
                
                    AND SAMPLING_DATE <= #{end,jdbcType=TIMESTAMP}
                
            
            order by s.SAMPLING_DATE desc
        ) X
        where ROWNUM <= #{endIndex,jdbcType=INTEGER}
        ) Z
        where RN > #{offset,jdbcType=INTEGER}

      最近,业务流程改变了,取样时间存在相等的情况了。

 

      后来,查询好几天的信息,就出现了一种情况。第三页的最后两条出现在了第四页的最前两条。

      后来想了一下,估计是因为取样时间相等的数据过多,导致排序乱了,就用了一个不可能重复的字段排序。

            order by s.SAMPLING_DATE desc,id desc

      这下情况正常了~

 

      这篇文章讲的非常好:

https://www.cnblogs.com/lwlxqlccc/p/8676045.html

你可能感兴趣的:(Oracle,sql)