在 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