在實際開發過程中,分頁查詢是最常使用的,只要存在**查詢,就會存在分頁查詢;
分頁的好處在於:減少查詢的資料量,不會給前端、後台伺服器、資料庫造成壓力,減少使用者等待時間。
如果僅僅是sql,不涉及前後端互動的話,最簡單的分頁查詢就是:
顯然,這種查詢,對於我們來說,基本上沒有意義,它往往蘊含著前後端互動:
由前端來決定要分頁大小pagesize,分頁的當前頁pageindex;
後台根據pageindex和pagesize計算出開始頁start和結束頁end。
前端:傳當前頁數和每頁的大小
j**a:計算起始數和結束數
其核心點在於:
int start = (pageindex - 1) * pagesize + 1;
int end = pageindex * pagesize;
ibatis:
select f.* from (
select e.*,rownum rowno from (
select t.grantjk,t.secretkey,t.accessid,t.id
from access_grant t
)e order by t.id
= #start#]]>
其核心點在於:
動態分頁,即:當引數start和end有值時,才進行分頁,沒值時,查詢的是所有資料。
最簡單查詢:
前端同上;
j**a:只需計算起始數;
其核心點在於:
計算起始數時,pageindex需要-1,因為limit是從0開始的,不是1!
使用mysql我們只需要知道start(起始數)和pagesize(分頁大小)。
ibatis:
select f.* from (
select t.themeid,t.themename,t.themecode,t.themelevel,t.parentthemeid,t.status,t.zjm,date_format(t.createtime,'%y-%m-%d') createtime,t.remark1,t.remark2,t.remark3
from meta_theme t
order by t.themeid
) f
其核心點在於:
動態分頁,即:當引數star有值時,才進行分頁,沒值時,查詢的是所有資料。
mysql和oracle分頁的區別在於:
mysql使用limit分頁,oracle使用rownum分頁;
mysql的limit 1,2 相當於:1limit 0,2 相當於:0oracle分頁是:1≤rownum≤2,得到的是第一行和第二行的記錄,也就是前兩行資料。
所以,這才是造成mysql起始數從0開始,oracle從1開始的真正原因。
其實oracle也可以用int start = (pageindex - 1) * pagesize;
不過,ibatis裡面不能再用≥start,而是使用》start即可。
oracle,mysql分頁總結
1.mysql 分頁 mysql 簡單 names表示要查詢的欄位名稱,formname表示查詢的表名,order查詢順序,pageno表示當前頁,pagesize表示每頁顯示條數,limit後面引數 pageno 1 pagesize表示從第幾條開始查詢,pagesize表示查詢幾條 sql se...
Oracle mysql的分頁語句
oracle分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內層的查詢select from table name表示不進行翻頁的原始查詢語句。row...
Oracle MySQL的分頁sql語句
oracle分頁 1.最好還是利用分析函式 row number over partition by col1 order by col2 比如想取出 100 150 條記錄 按照 tname 排序 select tname,tabtype from select tname,tabtype,row...