如何通过PostgreSQL中的非唯一/非唯一值来分页排序?

时间:2018-12-17 22:47:43

标签: postgresql pagination

如何通过对可能具有重复值的列进行排序来正确地进行分页?我有一个名为posts的表,该表具有一列,该列包含名为num_likes的特定帖子的喜欢次数,我想按num_likes DESC进行排序。但是下图显示了我遇到的一个问题-在两页之间插入新行会导致获取重复的数据。

This link here解释了该问题,并给出了键集分页的解决方案,但是据我所知,只有在对行进行排序的列为< strong>与众不同/独特。如果不是这种情况,我该怎么办?

new row problem pagination

1 个答案:

答案 0 :(得分:1)

通过向其添加主键,可以轻松地使排序键唯一。

您不必向用户显示主键,只需在内部使用它来区分“相等”的行即可。

对于查询和索引编制,您可以利用PostgreSQL的比较功能,例如:(num_likes, id) >= (4, 325698)