postgresql - 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
解决方案
严格来说,没有ORDER BY
Postgres 可以自由地返回任何行,因为顺序是未定义的并且任何结果都是正确的。(但 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
通常不是分页的最佳工具。看:
推荐阅读
- haskell - Haskell 将 putStr 和 putStrLn 放在程序的末尾而不是在执行期间
- opencv - GrabCut 的 GPU 版本
- python - Pyinstaller 可执行文件在隐藏时不运行进程
- ruby-on-rails - Rails 使用destroy soft_destroy,如何更新deleted_by
- c++ - 为什么这个测试总是返回假?
- linux - 用awk中的其他字符替换字符串的子字符串
- jquery - 使用 jquery 淡出后切换可见性不起作用
- spring - 如何在 Spring Boot 后端使用 jwt 令牌实现注销功能(使用休息端点)
- visual-studio-2012 - 为什么 Edge 将 encoding ="UTF-8" 更改为编码 ISO-8859-1
- apache - 可能导致 Domoticz API 401 错误的 Apache 代理更改是什么?