如何在Oracle中實現SELECT TOP N的方法_第1頁
如何在Oracle中實現SELECT TOP N的方法_第2頁
如何在Oracle中實現SELECT TOP N的方法_第3頁
如何在Oracle中實現SELECT TOP N的方法_第4頁
如何在Oracle中實現SELECT TOP N的方法_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.:.;如何在Oracle中實現SELECT TOP N的方法本文經過舉例的方式來教他如何在Oracle中實現SELECT TOP N的方法。 1.在Oracle中實現SELECT TOP N : 由于ORACLE不支持SELECT TOP語句,所以在ORACLE中經常是用ORDER BY跟ROWNUM的組合來實現SELECT TOP N的查詢。 簡單地說,實現方法如下所示: SELECT列名列名FROM (SELECT列名列名 FROM 表名 ORDER BY 列名列名) WHERE ROWNUM = N抽出記錄數 ORDER BY ROWNUM ASC下面舉個例子簡單闡明一下。 顧客表cu

2、stomer(id,name)有如下數據: ID NAME 01 first02 Second03 third04 forth05 fifth06 sixth07 seventh08 eighth09 ninth10 tenth11 last那么按NAME的字母順抽出前三個顧客的SQL語句如下所示: SELECT * FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM = 3 ORDER BY ROWNUM ASC輸出結果為: ID NAME08 eighth05 fifth01 first2.在TOP N紀錄中抽出第MM = N條

3、記錄: 在得到了TOP N的數據之后,為了抽出這N條記錄中的第M條記錄,我們可以思索從ROWNUM著手。我們知道,ROWNUM是記錄表中數據編號的一個隱藏子段,所以可以 在得到TOP N條記錄的時候同時抽出記錄的ROWNUM,然后再從這N條記錄中抽取記錄編號為M的記錄,即是我們希望得到的結果。 從上面的分析可以很容易得到下面的SQL語句: SELECT 列名列名 FROM ( SELECT ROWNUM RECNO, 列名列名FROM (SELECT 列名列名 FROM 表名 ORDER BY 列名列名) WHERE ROWNUM = N抽出記錄數 ORDER BY ROWNUM ASC )

4、WHERE RECNO = MM = N同樣以上表的數據為根底,那么得到以NAME的字母順排序的第二個顧客的信息的SQL語句應該這樣寫: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM M的部分的數據是根本上不會用到的,我們僅僅是為了闡明方便而采用。 如上所述,那么SQL語句應為: SELECT 列名列名 FROM ( SELECT ROWNUM RECNO, 列名列名FROM (SELECT 列名列名 FROM 表名 OR

5、DER BY 列名列名) WHERE ROWNUM = N抽出記錄數 ORDER BY ROWNUM ASC ) WHERE RECNO = N 那么,2中的例子的SQL語句那么為: SELECT ID, NAME FROM ( SELECT ROWNUM RECNO, ID, NAME FROM (SELECT * FROM CUSTOMER ORDER BY NAME) WHERE ROWNUM = (M + X - 1)這個范圍內,當然最經濟的取值就是取等號的時候了。當然最后的抽取條件也不是RECNO = N了,應該是RECNO BETWEEN M AND (M + X - 1)了,所以

6、隨之而來的SQL語句那么為: SELECT 列名列名 FROM ( SELECT ROWNUM RECNO, 列名列名FROM (SELECT 列名列名 FROM 表名 ORDER BY 列名列名) WHERE ROWNUM = (M + X - 1) ORDER BY ROWNUM ASC ) WHERE RECNO BETWEEN M AND (M + X - 1)同樣以上面的數據為例,那么抽取NAME的字母順的第二條記錄開場的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 AN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論