ORACLE取中間幾條記錄的方法

來源:互聯網
上載者:User
Oracle中用於類似MSSQL中top的關鍵字為rownumber,具體用法如下:
select firmcode,balance from (
                 select   rownum   rn,t.firmcode,t.balance
                 from FIRMBALANCE_TAB t
                 order by balance desc
          ) tab
          where tab.rn >0 and tab.rn < 11;

注:tab指的是: select   rownum   rn,t.firmcode,t.balance   from FIRMBALANCE_TAB t        order by balance desc
查詢得到的結果集.
tab.rn 指的是:select rownum rn
rownum是oracle給出的一個用來表明目前記錄位置的一個欄位 

下面的也是正確的:
select firmcode from FirmTable where rownum < 10 取前十條記錄;
select firmcode from firmTable where rownum = 1 取第一條記錄
但是下面是不正確的:
select firmcode from firmTable where rownum = 2 ,因為rownum都是從1開始的,沒第一條不可能出來第二條的
另外,按oracle9i參考手冊所言,如果跟order by的話需要用巢狀查詢:
If you embed the ORDER BY clause in a subquery and place the ROWNUM condition in the top-level query, then you can force the ROWNUM condition to be applied after the ordering of the rows. For example, the following query returns the 10 smallest employee numbers. This is sometimes referred to as a "top-N query":
因為rownum是已經排序好的結果集中的行號,並且用在最上層的限制中.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.