首页 > 解决方案 > Postgresql 偏移量返回相同的数据

问题描述

我有两张桌子。我想在调用查询结果时进行分页总是相同的。错在哪里?

select t1.id, status, category, lat, lng
    from public.p t1
join public.l t2 on t1.id=t2.id and user_id=4 limit 10 OFFSET 10

标签: postgresql

解决方案


严格来说,没有ORDER BYPostgres 可以自由地返回任何行,因为顺序是未定义的并且任何结果都是正确的。(但 Postgres 仍然适用OFFSET,因此即使没有 . 也应该“工作” ORDER BY。)

使用(确定性)重试ORDER BY

select t1.id, status, category, lat, lng
from public.p t1
join public.l t2 on t1.id=t2.id and user_id=4
ORDER BY ?something?                             -- !
limit 10
offset 10

尽管如此,LIMIT/OFFSET通常不是分页的最佳工具。看:


推荐阅读