4.抽出按某種方式排序的記錄集中的第M條記錄開始的X條記錄
3里所講得僅僅是抽取一條記錄的情況,當我們需要抽取多條記錄的時候,此時在2中的N的取值應該是在N >= (M + X - 1)這個范圍內(nèi),當讓經(jīng)濟的取值是取等好的時候了的時候了。當然后的抽取條件也不是RECNO = N了,應該是RECNO BETWEEN M AND (M + X - 1)了,所以隨之而來的SQL語句則為:
SELECT列名1...列名nFROM
(
SELECT ROWNUM RECNO,列名1...列名nFROM
(
SELECT列名1...列名nFROM表名ORDER BY列名1...列名n)
WHERE ROWNUM <= N(N >= (M + X - 1))
ORDER BY ROWNUM ASC
)
WHERE RECNO BETWEEN M AND (M + X - 1)
同樣以上面的數(shù)據(jù)為例,則抽取NAME的字母順的第2條記錄開始的3條記錄的SQL語句為:
SELECT ID, NAME FROM
(
SELECT ROWNUM RECNO, ID, NAME FROM
(SELECT * FROM CUSTOMER ORDER BY NAME)
WHERE ROWNUM <= (2 + 3 - 1)
ORDER BY ROWNUM ASC
)
WHERE RECNO BETWEEN 2 AND (2 + 3 - 1)
結(jié)果如下:
ID NAME
05 fifth
01 first
04 forth
以此為基礎(chǔ),再擴展的話,做成存儲過程,將開始記錄數(shù)以及抽取記錄數(shù)為參數(shù),可以輕松實現(xiàn)分頁抽取數(shù)據(jù)。
當然了,上面所講的都是一些基本的,實際應用中往往都沒有這么簡單,但是不管怎么說,不管復雜的應用總是由這些簡單的元素構(gòu)成,掌握一些基本的方法始終是重要的。
實際上網(wǎng)上這樣的文章比較多,我也只是稍微梳理了一下條理而寫的這篇文章。希望能給初學者一些幫助。