Oracle中分頁查詢語句怎么寫
oracle分頁有通用寫法,假設一頁5行select * from ( select t.*,rownum from ( select * from table1 where condition order by column) t ) where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5如果基礎查詢不需要排序,可以省掉一層嵌套select * from ( select t.*,rownum from table1 t where condition ) where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5。
mysql與oracle的分頁查詢語句
Oracle分頁查詢格式:
以下是代碼片段:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM )
WHERE RN >= 21
mysql
mysql>SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15 ,注意,10為偏移量
//為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1:
mysql>SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.
//如果只給定一個參數,它表示返回最大的記錄行數目:
mysql>SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行 //也就是說,LIMIT n 等價于 LIMIT 0,n。
詳解Oracle的幾種分頁查詢語句
Oracle, SQL Server 和MySQL的分頁SQL語句如下:Oracle:方法一:SELECT * FROM(SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40)WHERE RN = 21;方法二:SELECT * FROM(SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A)WHERE RN between 21 and 40
公認第二種方法效率沒有第一種高。原因是第二種要把子查詢執行完,而第一種方法子查詢執行到Rownum=40后就結束了。MySQL:
SELECT * FROM TABLE_NAME LIMIT 10, 20
表示從第11條數據開始取20條數據返回,limit后的2個參數含義為:起點和步長,即從那條數據開始,取多少條數據,再如取前20條數據:SELECT * FROM TABLE_NAME LIMIT 0, 20
SQL Server2000:
SELECT TOP @pagesize * FROM TABLE_NAME WHERE id not in (SELECT TOP @pagesize*(@page-1) id FROM TABLE_NAME ORDER BY id) ORDER BY id
oracle分頁查詢語句怎么寫每頁查詢10條
1、通常的分頁寫法,也是第一種分頁方法,類似如下方式:
select * from (
select a.*, rownum rn from
(select * from test a order by object_name) a
where rownum 990;
這種方式,是對表進行排序翻頁,比較常見,但是,第一頁與第1000頁的性能差異還是挺明顯的。
2、第二種的分頁寫法是對索引進行翻頁操作,然后根據rowid 去表中取數據。 這種方式,第一頁與第1000頁性能相差不大。
以下語句雖然使用HINT指定使用索引, 但是仍然沒有生效。
select b.* from (
select * from (
select a.*, rownum rn from
(select /*+ index(a ix_object_name) */ rowid rid from test a order by object_name) a
where rownum 10) a, test b
where * = *;
Oracle的分頁查詢語句是怎樣的
分頁查詢格式: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM = 21 其中最內層的查詢SELECT * FROM TABLE_NAME表示不進行翻頁的原始查詢語句。
ROWNUM = 21控制分頁查詢的每頁的范圍。 上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。
分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在WHERE ROWNUM = 21 以上是我對于這個問題的解答,希望能夠幫到大家。
如何用Oracle實現分頁
ORACLE分頁一直是比較麻煩的一件事情,它沒有MYSQL的LIMIT關鍵字,只有通過偽列ROWNUM來實現,如果不用排分頁其實很簡單,在此不述。
排序分頁中如果要排序的字段有很多相同值的情況下只使用2層嵌套查詢則可能出現數據混亂,所以只能采用三層嵌套查詢。 排序分頁使用下面的嵌套語句: Sql代碼 Java代碼 select * from (select rownum as r,t。
* from(select tableName。* from tableName order by tableColum DESC) t where rownumstartPos Java代碼 DECODE的語法:DECODE(value,if1,then1,if2,then2,if3,then3,。
。
,else),表示如果value等于if1時,DECODE函數的結果返回then1,。
。 ,如果不等于任何一個if值,則返回else Java代碼 select country, sum(decode(sex,'1',num)) 男, sum(decode(sex,'2',num)) 女 from populations group by country; select country, sum(CASE WHEN(sex = '1') THEN num ELSE 0 END) 男, sum(CASE WHEN(sex = '2') THEN num ELSE 0 END) 女, from populations group by country Java代碼 [b]sign[/b]取數字n的符號,大于0返回1,小于0返回-1,等于0返回0 編輯特別推薦: Oraclesqlplus中方向鍵、退格鍵的使用 Oracle的物化視圖 oracle存儲過程入門。
oracle分頁 語句
對的,你說的對,但是rowCount 不行吧,我一直用rownum,是了一下rowCount也不行,但是建議你這樣寫:select /*+first_rows(10)*/ b.* from (select /*+first_rows(10)*/ a.*,rownum rnum from (select /*+first_rows(10)*/ * from student ) a where rownum<= "+currentPage*pageSize+" )bwhere rnum>= (currentPage-1)*pageSize;這個意思就是認為的在sql中添加hint 數據庫返回指定條目的數據是最快的。
轉載請注明出處華閱文章網 » oracle分頁查詢語句