database - 在 PostgreSQL 中的某些偏移量中重复某些行
问题描述
当我同时使用 select、join、order by、offset 和 limit 时,为什么有时我会在不同的偏移量中重复行?
select * from users u
left join posts p on p.user_id = u.id
order by u.id
offset 0, limit 20
解决方案
问题是您正在使用amount
包含重复值的列 ( ) 进行排序。您的order by
子句不是确定性的,因此结果不稳定。
一个简单的解决方案是使用第二个排序标准来打破平局(看起来可以这样user(id)
做):
select * -- better enumerate the columns here
from wallets w
inner join users u on u.id = w.user_id -- your "left join" is actually "inner join"
where u.role = 'tester' and w.amount > 0
order by w.amount, u.id -- here is the second sorting criteria
offset 0, limit 20
推荐阅读
- java - 是否可以从 POM 中的依赖项中排除传递运行时范围依赖项?
- javascript - Ace 编辑器中的 JSHint 工作人员在静态 HTML 页面上被阻止
- python - 如何使用内部子图创建网格图?
- python - Python插入按行对csv进行排序
- laravel - 如何在来自请求 laravel 的 if-else 条件下重构参数?
- go - 使用同一模块的多个版本时,GoLand 包索引中断
- python - 带有索引的 Pandas groupby 分位数
- flutter - 如何将 Null 断言运算符与实例字段一起使用
- java - 如何使用按键事件检测用户是否单击了音量减小按钮?
- c# - ASP.NET 下拉到组合框