sql的关键字 limit 和offset
核心概念
LIMIT
(限制): 指定查询最多返回多少行记录。OFFSET
(偏移): 指定在开始返回记录之前要跳过多少行记录。它定义了结果集的起始点。
核心前提: 必须 使用
ORDER BY
子句来确保分页结果的顺序稳定和可预测。
示例: 假设 employees
表有 100 条记录,我们想每页显示 10 条 (page_size = 10
)。
第 1 页:
sql
SELECT * FROM employees ORDER BY employee_id -- 必须排序才能保证分页顺序稳定! LIMIT 10 OFFSET 0; -- 或简写为 LIMIT 0, 10 (MySQL风格)
结果:返回第 1 到第 10 条记录。
第 2 页:
sql
SELECT * FROM employees ORDER BY employee_id LIMIT 10 OFFSET 10; -- 跳过前10条,取接下来的10条
结果:返回第 11 到第 20 条记录。
数据库方言差异:
MySQL, PostgreSQL, SQLite: 支持
LIMIT number OFFSET number
语法。MySQL 也支持LIMIT offset, count
的简写形式(注意顺序:OFFSET
在前,LIMIT
在后)。SQL Server: 使用
OFFSET ... ROWS FETCH NEXT ... ROWS ONLY
语法