SQLPathLab
基础查询 · 基础

OFFSET

跳过指定行数,常用于分页。

简介

OFFSET 与 LIMIT 配合时,会先按 ORDER BY 确定稳定顺序,再跳过指定数量的结果行。没有唯一且稳定的排序键时,同一页可能在两次请求间出现重复或遗漏;偏移量很大时,数据库仍需定位并跳过前面的记录,深分页通常应改用游标条件。

基础语法

SELECT * FROM orders LIMIT 10 OFFSET 20;

示例

OFFSET 示例

示例跳过排序后的前 20 行再取 10 行;实际分页必须补充稳定 ORDER BY,不能依赖表的自然读取顺序。

示例数据表

表名:orders
orders
idcustomer_idproduct_idnamedepartmentamountstatuscreated_atdiscount
1 101 201 Alice Sales 1200 paid 2026-01-03 0
2 102 202 Bob IT 900 pending 2026-01-08 50
3 101 201 Cindy Sales 1500 paid 2026-02-02 100
4 104 203 David HR 700 cancelled 2026-02-15 0

运行结果

result
idcustomer_idproduct_idnamedepartmentamountstatuscreated_atdiscount

常见问题

OFFSET 分页为什么必须配合稳定排序?

如果 ORDER BY 不能唯一确定顺序,同值记录可能在相邻页面重复或遗漏;应增加主键等唯一字段作为次级排序。

深分页为什么会越来越慢?

数据库通常仍要定位并跳过前面的记录;页码很深时可考虑用最后一条记录的排序键做游标分页。

翻页期间有新增或删除数据会怎样?

OFFSET 按位置取页,前面数据变化会让后续位置偏移;需要连续浏览的一致性时应评估游标分页或快照读取。

标签

过滤数据

这篇内容是否清楚?