oracle分页数据重复问题

来源:互联网 发布:算法分析与设计pdf迅雷 编辑:程序博客网 时间:2024/04/30 01:13

转自:http://www.2cto.com/database/201307/227912.html

oracle rownum分页出现重复数据
2013-07-15      0 个评论       作者:神勇小白鼠
收藏   我要投稿
oracle rownum分页出现重复数据
 
通常一般的分页语句如下:
 
?
1
2
3
4
5
6
7
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc)
row_ whererownum <= ?) b
where b.rownum_ >?

 

 
当红字部分的 DATA_UPDATE_TIME 不能唯一确定记录的顺序就会出现这个问题,比如有重复的DATA_UPDATE_TIME 。
 
只要将语句写成:
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
select * from (    
  
select row_.*, rownum rownum_    
  
from (   
  
select p.id from table1 p    
  
order by p.DATA_UPDATE_TIME desc    
  
) row_   )    
  
where rownum_ > ? and rownum_ <= ?

 

 
就ok.
 
另一种改法:
 
?
1
2
3
4
5
6
7
select *
from (
select row_.*, rownum rownum_
from ( select p.id from table1 p
order by p.DATA_UPDATE_TIME desc,p.iddesc )
row_ whererownum <= ?) b
where b.rownum_ >?

 

 
再加一个不重复的也就行了

 

0 0
原创粉丝点击