Oracle数据库排序后分页查询数据错误问题解决

一、问题描述:根据更新时间倒序排序然后分页查询数据,但是点击分页操作的时候,会出现数据重复看似没有操作的情况

Oracle数据库排序后分页查询数据错误问题解决

Oracle数据库排序后分页查询数据错误问题解决

二、问题错误原因分析

  分页查询的SQL语句:

1 1 select *
2 2  FROM (select rownum rn,tmp_tb.* 
3 3  FROM (select * FROM DB_ENTERPRISE WHERE 1=1 and del_flag='0' order by UPDATE_TIME desc) tmp_tb
4 4  WHERE rownum <= 1) 
5 5 WHERE rn >= 10;

  怎么分析都觉得没有错啊,通过网上查询才发现问题所在,参考地址:https://jingyan.baidu.com/article/7908e85ca2d929af491ad260.html

  由于我要排序的字段有大量导入数据的时间是一样的,所以导致无法区分

三、解决办法

  给排序的字段再加一个唯一字段进行排序,即可

  更新SQL语句:

1 select u.*
2  FROM (select rownum rn,tmp_tb.* 
3  FROM (select id, enterprise_name, enterprise_type, enterprise_domain, enterprise_province, enterprise_address, create_user_id, create_user_name, create_time, update_time, del_flag, ext1, ext2, ext3, ext4, ext5,ENTERPRISE_PROVINCE_ID
4  FROM DB_ENTERPRISE
5  WHERE 1=1 and del_flag='0' order by UPDATE_TIME desc,id) tmp_tb
6  WHERE rownum <= 21 )u
7  WHERE u.rn >= 10  ;