分頁查詢作為一項十分重要的資料庫查詢技術,在很多web專案中都會要用到,當然移動開發中也是會涉及的。
一、分頁查詢的sql語句:
ps:為了方便闡述,下面統一使用student表作為查詢的表;colname表示student表中的某個欄位名字。
1、mysql
select * from student (order by colname) limit m, n;
引數解釋m:表示要查詢記錄的上一行的行號,比如要從第1條記錄開始查則m取0;
n:表示希望從m+1開始查詢多少條記錄;
示例:
studet表中的資料如下
引數解釋rownum:是oracle系統為查詢返回的行順序分配的編號,詳細介紹請參考該博文:
m:查詢的最大行號;
n:查詢的最小行號;
這樣查詢的結果行數為:m-n+1
示例:
student表中的資料如下:
實現的sql語法有多種:
①利用id大於多少
select top 4 * from student where stuid>( select max(stuid) from ( select top 2 stuid from student order by stuid ) as t ) order by stuid;
②利用not in
select top 4 * from student where stuid not in ( select top 2 stuid from student order by stuid) as t order by stuid;
③利用顛倒型top
select * from ( select top 4 * from ( select top 6 * from student order by stuid ) as t order by t.stuid desc ) as t1 order by t1.stuid;
④使用row_number()函式
select * from ( select *,row_number() over (order by stuid) as rank from student ) as t where t.rank between 3 and 6;
由於沒怎麼用sql server,所以電腦上沒裝,這裡就不給出查詢示例了。
二、jdbc中如何實現動態分頁
1、四個重要引數
pagenow 當前的頁碼
pagecount 總頁數
pagesize 每頁中顯示多少條記錄
rowcount 表中記錄的總行數
2、根據rowcount和pagesize計算pagecount的小演算法
① if(rowcount % pagesize == 0) else
② pagecount = rowcount % pagesize == 0 ? rowcount / pagesize : rowcount / pagesize + 1;
③ pagecount = (rowcount - 1) / pagesize + 1;
原理是一樣的,只是給出了三種形式,個人比較喜歡③。
3、將pagesize和pagenow用在jdbc的sql語句中查詢當前頁的記錄
⑴mysql
select * from student (order by colname) limit (pagenow-1)*pagesize, pagesize;
⑵oracel
select * from (select t.*,rownum rn from (select * from student) t where rownum<=pagenow*pagesize) where rn>=(pagenow-1)*pagesize+1;
⑶sql server
select top pagesize * from student where stuid>( select max(stuid) from ( select top (pagenow-1)*pagesize stuid from student order by stuid ) as t ) order by stuid;
sql server分頁查詢語句中,這條語句的效率較高,其他的幾種查詢形式這裡就不討論了。
Oracle之分頁查詢
oracle的分頁查詢語句基本上可以按照本文給出的格式來進行套用。分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21其中最內層的查詢select from ta...
Oracle之分頁查詢
分頁查詢 在資料量大的情況下,返回指定資料段資料集合,即從第m條 到 第n條 資料集合。分頁查詢一般只需傳入兩個引數 起始記錄數m 終止記錄數n 方式1 select from select rownum as rowno,t.from t table t where 1 1 and rownum ...
SQL之分頁查詢
sql之分頁查詢 最新公司專案用到分頁的sql,與大家分享下,查詢起始頁和結束頁 select from select projectid,creatorid,directorid,managerid,projectno,projectname,status,startdate,finishdate...