這篇文章主要介紹使用rownum分頁排序前后幾次查詢數(shù)據(jù)不一樣的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
禹會網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
1.環(huán)境:創(chuàng)建一個表
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. 兩個語句查詢出的結(jié)果不一樣,而且有時候還會有變化。
4.分析后可以知道,看上面數(shù)據(jù):以buydate 來排序,但是buydate 有幾行數(shù)據(jù)時間一樣。那么數(shù)據(jù)庫就會隨機(jī)給出一個順序。因此,兩個語句得出不一樣的順序。分頁取得數(shù)據(jù)就不一樣了。其實(shí)兩條語句效果是一樣的。那要怎么改寫,才能讓分頁取數(shù)據(jù),前后幾次查詢的數(shù)據(jù)絕對一樣呢?關(guān)鍵在排序字段。如果buydate,沒有重復(fù),就可以了啦。
以上是“使用rownum分頁排序前后幾次查詢數(shù)據(jù)不一樣的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!