You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中LIMIT与OFFSET/FETCH FIRST返回行数不符问题

PostgreSQL分页返回行数不符合预期的原因及解决方法

问题原因

你对OFFSET和LIMIT(或FETCH FIRST ... ROW ONLY)的逻辑理解出现了偏差:

  • OFFSET 10的作用是跳过查询结果的前10行,从第11行开始返回数据,而不是把第10行作为结束位置。
  • LIMIT 20(或FETCH FIRST 20 ROW ONLY)是从跳过前10行的位置开始,再取20行数据。所以最终返回的是第11到第30行的20条数据,这就是实际返回20行的原因。

正确写法

如果你想获取第10到第19行的10条数据(共10条),需要调整OFFSET和LIMIT的数值:
使用LIMIT语法:

select user_id, max(order_ts) as lastorder
from production.orders
group by user_id 
order by lastorder desc, user_id desc
OFFSET 9  -- 跳过前9行,从第10行开始
limit 10;  -- 取10行数据

使用FETCH语法:

select user_id, max(order_ts) as lastorder
from production.orders
group by user_id 
order by lastorder desc, user_id desc
OFFSET 9 ROWS 
FETCH FIRST 10 ROW ONLY;

核心要点

  • OFFSET N:跳过前N行,返回结果从第N+1行开始(行号从1计数)。
  • LIMIT M/FETCH FIRST M ROW ONLY:指定从偏移位置开始,返回M行数据。

内容的提问来源于stack exchange,提问作者Martynova Nadezhda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 19:06:20