SQL分頁查詢


分頁查詢

1、limit start,count語法

select * from 表名 limit start,count

說明:

limit是分頁查詢關鍵字
start表示開始行索引,默認是0
count表示查詢條數

例1:查詢前3行男生信息:

select * from students where gender=1 limit 0,3;

類比:

已知每頁顯示m條數據,求第n頁顯示的數據

提示: 關鍵是求每頁的開始行索引

查詢學生表,獲取第n頁數據的SQL語句:

select * from students limit (n-1)*m,m

2、LIMIT OFFSET 語法

分頁實際上就是從結果集中“截取”出第M~N條記錄。這個查詢可以通過LIMIT <N-M> OFFSET <M>子句實現

例:

我們把結果集分頁,每頁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:

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 3 OFFSET 3;

3、子查詢分頁

越往后分頁,LIMIT語句的偏移量就會越大,速度也會明顯變慢。此時,我們可以通過子查詢的方式來提高分頁效率,大致如下:

SELECT * FROM students WHERE  id >=  
(SELECT id FROM students  WHERE book_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10 

4、JOIN分頁方式

SELECT * FROM `content` AS t1   
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2   
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM