oracle的分頁函式rownum

2021-10-20 09:16:23 字數 1532 閱讀 3163

rownum屬於oracle中的偽列(pseudocolumns)。 用法有些細節,所以單獨拉出來說明。

主內容其他

語句為:

select

*from t_user where rownum >

10;

題目1答案

select * from t_user where rownum > 5;

該語句不返回任何結果。為什麼呢?

描述:rownum是從1開始的。

逐條拿出記錄並分配rownum,再進行rownum條件判斷。

過程:先拿出一條,分配rownum=1,判斷是否符合rownum>1。

不符合,丟棄掉。

再拿出一條,因為上一條丟棄掉了,所以這條rownum仍然是1,

不符合條件,繼續丟棄。

以此類推,後續都不符合。所以不返回任何記錄。

有的場景確實要用到rownum大於n的條件,如何使用呢?

其實很簡單,給rownum加個列別名即可。sql如下:

select

*from

(select

product_name,price,rownum as rn

from t_product where rownum <

10) a

where a.rn >

5

有的表沒有序號列,新增列之後,可以用如下語句設定序號值:

update t_user set sequence = rownum;
這樣就sequence列就是1-n的序號的。

oracle中where rownum只能寫個大寫或者小寫。 所以需要包2層。例如mybatis中:

select

*from

(select

b1.*,

rownum rn

from

(-- 替換部分start

select

*from

t_user

where username like

'%a%'

-- 替換部分end

) b1

where rownum <=(

#*#) --第一層設定右邊界

) b2

where rn >=(

(#-1)*# +1) -- 第二層,設定左邊界

題目1答案

t_user表有20條記錄,執行下列語句會返回多少條記錄?

是10條嗎? 當然不是,實際不返回任何資料。

原因本文件中有。

oracle官網rownum文件:

wnum-pseudocolumn.html#guid-2e40ec12-3fcf-4a4f-b5f2-6bc669021726

輸入搜尋內容即可檢索,例如搜尋 rownum。

Oracle 分頁函式總結

1.根據rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...

Oracle資料庫中rowid與rownum的區別

在查詢中,我們可以注意到,類似於 select xx from table where rownum n n 1 這樣的查詢是有正確含義的,而 select xx from table where rownum n 這樣的查詢只在n 1的時候成立,select xx from table where...

oracle分頁函式寫法總結

1.根據rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...