您好,登錄后才能下訂單哦!
這篇文章主要介紹使用rownum分頁排序前后幾次查詢數據不一樣的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1.環境:創建一個表
create table test (id number, buydate timestamp);
begin
for i in 1..10 loop
insert into test values(i,sysdate);
end loop;
end;
select * from test;
1 22-AUG-17 03.19.15.000000 PM
2 22-AUG-17 03.19.15.000000 PM
3 22-AUG-17 03.19.15.000000 PM
4 22-AUG-17 02.19.15.000000 PM
5 22-AUG-17 03.19.15.000000 PM
6 22-AUG-17 03.19.15.000000 PM
7 22-AUG-17 03.19.15.000000 PM
8 22-AUG-17 04.19.15.000000 PM
9 22-AUG-17 03.19.15.000000 PM
10 22-AUG-17 03.19.15.000000 PM
使用rownum分頁排序sql語句如下:
--1
SELECT *
FROM ( SELECT P.*, ROWNUM AS RN
FROM (SELECT *
FROM TEST
WHERE 1 = 1
ORDER BY buydate DESC) P )
where rn >4 and rn <=6 ;
--2
SELECT *
FROM ( SELECT P.*, ROWNUM AS RN
FROM (SELECT *
FROM TEST
WHERE 1 = 1
ORDER BY buydate DESC) P where rownum <= 6 )
where rn >4;
3. 兩個語句查詢出的結果不一樣,而且有時候還會有變化。
4.分析后可以知道,看上面數據:以buydate 來排序,但是buydate 有幾行數據時間一樣。那么數據庫就會隨機給出一個順序。因此,兩個語句得出不一樣的順序。分頁取得數據就不一樣了。其實兩條語句效果是一樣的。那要怎么改寫,才能讓分頁取數據,前后幾次查詢的數據絕對一樣呢?關鍵在排序字段。如果buydate,沒有重復,就可以了啦。
以上是“使用rownum分頁排序前后幾次查詢數據不一樣的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。