使用select查詢時,如果結果集資料量很大,比如幾萬行資料,放在乙個頁面顯示的話資料量太大,不如分頁顯示,每次顯示100條。
要實現分頁功能,實際上就是從結果集中顯示第1-100條記錄作為第1頁,顯示第101-200條記錄作為第2頁,以此類推條。
因此,分頁實際上就是從結果集中「擷取」出第m~n條記錄。這個查詢可以通過limit offset
子句實現。先把所有學生按照成績從高到低進行排序:
select id, name, gender, score from students order by score desc;
現在,把結果集分頁,每頁3條記錄。要獲取第1頁的記錄,可以使用limit 3 offset 0
:
select id, name, gender, score
from students
order by score desc
limit 3 offset 0;
上述查詢limit 3 offset 0
表示,對結果集從0號記錄開始,最多取3條。注意sql記錄集的索引從0開始。
如果要查詢第2頁,那麼我們只需要「跳過」頭3條記錄,也就是對結果集從3號記錄開始查詢,把offset設定為3。類似的,查詢第3頁的時候,offset應該設定為6。
limit 3表示的意思是「最多3條記錄」。
可見,分頁查詢的關鍵在於,首先要確定每頁需要顯示的結果數量pagesize(這裡是3),然後根據當前頁的索引pageindex(從1開始),確定limit和offset應該設定的值:
這樣就能正確查詢出第n頁的記錄集。
如果原本記錄集一共就10條記錄,但我們把offset設定為20,offset超過了查詢的最大數量並不會報錯,而是得到乙個空的結果集:
empty result set
offset是可選的,如果只寫limit 15
,那麼相當於limit 15 offset 0
。
在mysql中,limit 15 offset 30
還可以簡寫成limit 30, 15
。
使用limit offset
分頁時,隨著n越來越大,查詢效率也會越來越低。
使用limit offset
可以對結果集進行分頁,每次查詢返回結果集的一部分;
分頁查詢需要先確定每頁的數量和當前頁數,然後確定limit和offset的值。
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...