SQL分頁查詢

2021-10-02 14:46:21 字數 2737 閱讀 4319

要實現分頁,必須要知道 某一頁的資料 從**開始 到**結束

假設每頁顯示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...