在 MySQL 中,實現分頁查詢通常使用 LIMIT
子句。LIMIT
可以指定返回結果的起始位置和數量,非常適合實現分頁功能。
基本語法如下:
SELECT 列名 FROM 表名
WHERE 條件
ORDER BY 排序字段 [ASC|DESC]
LIMIT 起始位置, 每頁顯示數量;
說明:
- 起始位置:從第幾條記錄開始查詢(索引從 0 開始)
- 每頁顯示數量:每頁要顯示的記錄條數
示例:
假設我們有一個 users
表,要實現分頁查詢:
- 查詢第 1 頁,每頁顯示 10 條記錄:
SELECT * FROM users
ORDER BY id ASC
LIMIT 0, 10; -- 從第0條開始,取10條
- 查詢第 2 頁,每頁顯示 10 條記錄:
SELECT * FROM users
ORDER BY id ASC
LIMIT 10, 10; -- 從第10條開始,取10條
- 通用分頁公式(已知頁碼和每頁條數):
-- 頁碼:pageNum(從1開始)
-- 每頁條數:pageSize
SELECT * FROM 表名
ORDER BY 排序字段
LIMIT (pageNum - 1) * pageSize, pageSize;
注意事項:
- 分頁查詢通常需要配合
ORDER BY
使用,否則返回的結果順序可能不一致 - 當數據量很大時,使用大的偏移量(如
LIMIT 100000, 10
)可能會影響性能 - 在 MySQL 8.0+ 中,也可以使用
LIMIT ... OFFSET ...
語法,與LIMIT 起始位置, 數量
效果相同:SELECT * FROM users LIMIT 10 OFFSET 0; -- 等同于 LIMIT 0, 10