主頁 > 知識庫 > 數據庫 > Oracle >

oracle rownum分頁出現重復數據

來源:中國IT實驗室 作者:佚名 發表于:2013-07-16 15:47  點擊:
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_ where rownum = ?) b where b.rownum_ ? 當紅字部
 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_ where rownum <= ?) 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.id desc )
row_ where rownum <= ?) b
where b.rownum_ >?
  再加一個不重復的也就行了

    有幫助
    (1)
    100%
    沒幫助
    (0)
    0%
    31选7什么时候开奖