rownum屬於oracle中的偽列(pseudocolumns)。 用法有些細節,所以單獨拉出來說明。
主內容其他
語句為:
題目1答案select
*from t_user where rownum >
10;
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中:
題目1答案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) -- 第二層,設定左邊界
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...