做了一个分页,按照取样时间排序。
Select * from (select ROWNUM RN,X.*
from (
select s.* from T_TEST_SAMPLE s
<where>
<if test="qualityName!=null and qualityName!=''">
AND TRIM(s.sample_name) = #{qualityName,jdbcType=VARCHAR}
</if>
<if test="begin!=null ">
and SAMPLING_DATE >= #{begin,jdbcType=TIMESTAMP}
</if>
<if test="end!=null ">
AND SAMPLING_DATE <= #{end,jdbcType=TIMESTAMP}
</if>
</where>
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
这下情况正常了~
这篇文章讲的非常好: