oracle分頁和mysql分頁有點不一樣,mysql利用limit分頁,oracle利用rownum關鍵字來進行分頁。
–rownum關鍵字:oracle對外提供的自動給查詢結果編號的關鍵字,與每行的資料沒有關係。接下來就用這張表來嘗試分頁,這張表一共有31條資料–注意:rownum關鍵字只能做< <=的判斷,不能進行》 >=的判斷,所以外層我們用內層查出的rownum放到外層去比較
--第幾頁:page
--每頁大小:size
select t2.
*,rownum
from
(select rownum as rowno, t.
*from
table t
where rownum <= size*page) t2
where t2.rowno > size*
(page-1)
;
例:
--第幾頁:page=1
--每頁大小:size=10
select t2.
*,rownum
from
(select rownum as rowno, t.
*from
table t
where rownum <=10*
1) t2
where t2.rowno >10*
(1-1
);
--第幾頁:page=2
--每頁大小:size=20
看到上面的查詢語句你可能會想到為什麼不直接用一層來解決呢
select rownum as rowno, t.* from table t where rownum <= size*page and rownum > size*(page-1);
你會發現明明是有資料的,但用這語句就是查不出來呢
select rownum as rowno, t.* from table t where rownum <= 10*2 and rownum > 10*(2-1);
這樣看的可能不是太清晰,那這樣呢
select rownum as rowno, t.* from table t where rownum > 10;
是不是發現了端倪,>或者》=對rownum無效,所以一層無法實現分頁查詢
--第幾頁:page
--每頁大小:size
select t2.
*from
(select rownum as rowno, t1.
*from
(select t.
*from
table t
order
by activity_id desc
) t1
where rownum <= size * page) t2
where rowno > size *
(page -1)
;
注意,用到order by的查詢需要三層,這裡肯定又會有疑問,兩層為什麼不行,我在內層加上order by排序不行嗎,這我們需要考慮到sql的執行順序,select是要比order by先執行的,這意味著什麼,我們先select了10條資料,然後再對這10條資料進行排序,這樣好像不是我們想要的結果,所以為了讓order by先執行,那我們就得再巢狀一層來解決這個問題。
例:
--第幾頁:page
--每頁大小:size
--第幾頁:page=1
--每頁大小:size=10
Oracle 表明細及說明
oracle中以dba user v all session index開頭的常用.一.oracle表明細及說明 1.dba 開頭表 dba users 資料庫使用者資訊 dba segments 表段資訊 dba extents 資料區資訊 dba objects 資料庫物件資訊 dba tabl...
ORACLE 外連線及 說明
另外一種左右外連線的表示法為 當 在 左側時,代表以右側為全量輸出,即為右外連線 當 在 右側時,代表以左側為全量輸出,即為左外連線 總結一句話時,就是 在哪一側,對應的表輸出的未匹配到的資料為空,即為反方面的外連線。使用 有以下限制 1.操作符只能出現在where子句中,並且不能與outer jo...
meteor例項 1 建立及說明
這個專案按照discover meteor 1.0 手冊上面的步驟進行。首先 建立專案microscope。建立完畢後,為了便於管理 在microscope資料夾下新建兩個資料夾 public 和 lib。關於檔案,meteor 有以下幾條規則 在 server 資料夾中的 只會在伺服器端執行。在 ...