jdbc之分頁查詢

2022-04-11 15:02:49 字數 3040 閱讀 8767

分頁查詢作為一項十分重要的資料庫查詢技術,在很多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...