要實現分頁,必須要知道 某一頁的資料 從**開始 到**結束
假設每頁顯示10條資料
mysql 分頁從0開始計數,oracle/sql server 從1開始計數
第n頁 開始 結束11
1021120321
30n (n-1)
*10+1 n*
10
結論: 第n條資料:第(n-1)10+1條 ----第n10條
例如:select * form student where sno >=(n-1)*10+1 and sno<=n*10;----前提是sno列的值是連續的,沒有否則無法滿足顯示10條資料。
select rownum ,t.
*from student t where rownum>=
(n-1)*
10+1and rownum<=n*
10order
by sno asc
;
上述sql語句存在問題: 1,如果根據sno排序則會導致rownum混亂(解決方案:分開使用->先排序,再選擇rownum) 2,rownum不能查詢》的資料(將rownum變成普通列)
具體實現:
select
* form (
select rownum r , t.
*from
(select s.
*from student s order
by sno asc
) t
) where r >=
(n-1)*
10+1and r<=n*
10;
優化:避免巢狀查詢語句查詢大量資料
select
* form (
select rownum r , t.
*from
(select s.
*from student s order
by sno asc
) t
where rownum <=n*
10 ) where r >=
(n-1)*
10+1;
sqlserver 2003支援:top
sqlserver 2005之後支援:
row_number(
)over
(字段);
例如:
select
* form (
select row_number(
)over
(sno order
by sno asc
)as r, t.
*from student t
where row_number(
)<=n*
10 ) where r >=
(n-1)*
10+1;
sqlserver 2012之後支援:offset fetch next only
select
*from student order
by sno
offset (頁數-
1)*頁面大小+
1rows
fetch
next 頁面大小 rows only ;
第n頁 開始 結束10
921019320
29n (n-1)
*10(n-1)*
10+9
mysql實現分頁的sql:
select
*from
table
limit m,n;
其中m
是指記錄開始的index,從0開始,表示第一條記錄
n
是指從第m+1
條開始,取n
條。
select
*from tablename limit2,
4;
即取出第3條至第6條,4條記錄
例如 :
第1頁select * from student limit 0,10;
第2頁select * from student limit 10,10
第n頁select * from student limit (n-1)*10,10;
公式:limit <(頁數-1)*頁面大小》, 《頁面大小》;
分頁實現:
5個變數(屬性)
資料總數查資料庫,select count(*)
頁面大小每頁顯示的資料條數
總頁數
總頁數=資料總數%頁面大小==0?資料總數/頁面大小:資料總數/頁面大小+1;
當前頁(頁碼)當前頁的物件集合(實體類集合)每頁所顯示的所有資料,比如10個學生資訊 list
若存在錯誤的地方,請指出哦!
SQL分頁查詢
分頁sql查詢在程式設計的應用很多,主要有儲存過程分頁和sql分頁兩種,我比較喜歡用sql分頁,主要是很方便。為了提高查詢效率,應在排序欄位上加索引。sql分頁查詢的原理很簡單,比如你要查100條資料中的30 40條,你先查詢出前40條,再把這30條倒序,再查出這倒序後的前十條,最後把這十條倒序就是...
sql分頁查詢
declare id int declare moverecords int declare currentpage int declare pagesize int set currentpage 300 set pagesize 100 currentpage和 pagesize是傳入引數 se...
SQL分頁查詢
關於sql語句分頁,網上也有很多啦,我貼一部分過來,並且總結自己已知的分頁到下面,方便日後查閱。方法1 適用於 sql server 2000 2005 1 select top 頁大小 2from table1 3where id not in4 5select top 頁大小 頁數 1 id f...