一、问题描述:根据更新时间倒序排序然后分页查询数据,但是点击分页操作的时候,会出现数据重复看似没有操作的情况
二、问题错误原因分析
分页查询的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 ;