我该如何正确地通过对可能具有重复值的列进行排序来分页呢?我有一个名为
posts
的表,其中有一列包含某篇帖子的喜欢数,名为num_likes
,我想按num_likes DESC
排序。但下面的图片显示了我遇到的问题 - 在两个页面之间插入新行会导致重复数据被获取。
此链接解释了这个问题,并提供了keyset pagination的解决方案,但据我所见,只有当对行进行排序的列是独特/唯一时才能起作用。如果不是这种情况,我该怎么做呢?
![new row problem pagination](https://istack.dev59.com/k23xe.webp)
num_likes
排序,那么主键如何仍然按升序排列?我觉得它们不会。 - Michael Hsunum_likes,id
排序,则首先按num_likes
对行进行排序,仅对于相等的num_likes
,才按id
排序。这不会改变可见的排序顺序,但仍会使行唯一,因此您不会重复获取相同的行。 - Laurenz Albe