Oracle中使用偽列rownum實現分頁查詢

2021-10-05 15:12:53 字數 844 閱讀 3210

rownum是查詢返回的結果集中行的序號,可以使用它來限制查詢返回的行數

select * from(

select * from emp order by sal desc

)where rownum<=3

結果如下:

如果這樣寫:

select * from(

select * from emp order by sal desc

)where rownum>=5 and rownum<=9

是沒有結果的:

原因是因為rownum的生成規則,是先有結果才有序號,是動態的排序。也就是說,這裡查詢到第一條資料,rownum=1,不符合表示式rownum>=5,所以丟棄,再查詢下一條記錄,又從rownum=1開始排序,一直到最後都沒有符合查詢條件的結果。

所以要想實現此查詢,就要把rownum從動態資料變成靜態資料,可以這樣寫:

結果如下:

注意:rownum是從排序之前計算序號的,可以:select emp.*,rownum from emp order by sal desc 去測試一下,會發現rownum這一行不是有順序的從1開始向下排的:

oracle分頁 使用rownum 偽列

connected to oracle database 10g enterprise edition release 10.2.0.1.0 connected as tudou sql select from temp1 name age 土土 22 z壯 23 z 25 a 28 奇才 29 才...

mysql偽列 MySQL使用偽列

在查詢資料庫的時候,我們有時候需要對查詢出來的資料加上序列,1,2,3,n 例如 我們根據表的某個字段排序後,要對這些資料加上序列,這個時候序號常常不是我們建表時設定好的自增的主鍵id,怎麼辦呢?可能我們會用變數來解決,如下 set rownum 0 select rownum rownum 1 a...

Oracle中Dual偽列的使用

dual 是 oracle中的乙個實際存在的表,任何使用者均可讀取,常用在沒有目標表的select中。使用方法 檢視當前連線使用者 sql select user from dual 檢視當前日期 時間 sql select sysdate from dual sql select to char ...