序號rownum的理解和用法

2021-06-09 02:41:22 字數 923 閱讀 2233

rownum使用》= 

分析:用rownum rn把rownum轉成例項,因為rownum本身只能用 <=的比較方式,只有轉成實列,這樣就可做 >=的比較了。

select *

from (select a.*, rownum rn

from torderdetail a)

where rn >= 10 and rn <= 20

求取最近的幾條紀錄

分析:這就需要先對紀錄進行排序後再取rownum <=

寫法1(進行全表掃瞄後再排序,然後再取10條紀錄):

select *

from (select  a.*

from torderdetail a

order by order_date desc)

where rownum <= 10

寫法2(不會全表掃瞄,只會取出10條紀錄,和寫法1比,寫法2明顯效率更高):

select  a.*

from torderdetail a

where rownum <= 10

order by order_date desc

執行的順序是先執行排序取10條紀錄;還是取10條紀錄,再排序。是由order by 的字段是是否是pk決定的。

order by 的字段是pk,則是先排序,再取10條(速度比第一種語句快)

排序字段不是pk 時,是先取10條再排序,此時結果就與要求不一樣了,所以寫法2一定要在排序欄位是主鍵的情況下才能保證結果正確。

rownum另外用法:輸出當月的所有天數

select    trunc (sysdate, 'mm') + rownum - 1

from dual

connect by rownum <= to_number (to_char (last_day (sysdate), 'dd'))

對rownum和rowid的理解

1 rownum 關於rownum,可以看成是對已經查詢出來的結果加上的乙個偽列。在利用rownum進行去資料的時候,系統首先從所給的條件處檢索,是查詢到不符合rownum條件的記錄為止,不符合條件就刪除,之後的記錄就緊跟上來,所以一般以後的記錄就都不會符合條件了。所以,對於rownum 直接利用的...

關於rownum 的用法

取出結果集的80到 100的 sql語句 oracle 處理每個結果集只有乙個 rownum 字段標明它的邏輯位置,並且只能是用 rownum 100 不能是 rownum 80 看不懂是什麼意思啊?這個 rownum 到底是什麼東西 gt 敫呤種傅鬩幌隆 hr oracle 內部操作 rownum...

Oracle中rownum的用法

1 查詢第幾行的記錄 select sal from emp where rownum 1 查詢得到第一行記錄 select sal from emp where rownum 5 不可以查詢到第五行記錄,因為 rownum 總是從1 開始查詢的,故這種方式不可以直接得到第幾行的記錄。若想得到第五行...