4.抽出按某種方式排序的記錄集中的第M條記錄開始的X條記錄
3里所講得僅僅是抽取一條記錄的情況,當(dāng)我們需要抽取多條記錄的時(shí)候,此時(shí)在2中的N的取值應(yīng)該是在N >= (M + X - 1)這個(gè)范圍內(nèi),當(dāng)讓經(jīng)濟(jì)的取值是取等好的時(shí)候了的時(shí)候了。當(dāng)然后的抽取條件也不是RECNO = N了,應(yīng)該是RECNO BETWEEN M AND (M + X - 1)了,所以隨之而來(lái)的SQL語(yǔ)句則為:
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語(yǔ)句為:
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ǔ),再擴(kuò)展的話,做成存儲(chǔ)過(guò)程,將開始記錄數(shù)以及抽取記錄數(shù)為參數(shù),可以輕松實(shí)現(xiàn)分頁(yè)抽取數(shù)據(jù)。
當(dāng)然了,上面所講的都是一些基本的,實(shí)際應(yīng)用中往往都沒有這么簡(jiǎn)單,但是不管怎么說(shuō),不管復(fù)雜的應(yīng)用總是由這些簡(jiǎn)單的元素構(gòu)成,掌握一些基本的方法始終是重要的。
實(shí)際上網(wǎng)上這樣的文章比較多,我也只是稍微梳理了一下條理而寫的這篇文章。希望能給初學(xué)者一些幫助。