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 開始查詢的,故這種方式不可以直接得到第幾行的記錄。若想得到第五行...