我试图创建一个基于日期的光标分页。
假设前11条记录具有确切的日期值。我把每页的限制设置为10。
在挖掘了一些游标分页库之后,我发现下一个游标有更大的标识符(在我的例子中,标识符是DateTime(。所以,如果像下面这样为第二页编写查询,第一个元素是第12条记录,而不是第11条。
where date > '10th record date'
由于限制,第11张唱片也不会出现在首页。
第一页或第二页上没有第11个元素。
我如何解决这个问题?我不能将它与id
混合,因为结果是按date
排序的,并且不能保证id
是有序的。
那么,如何在每页都有限制的情况下创建光标分页呢?
您需要一个额外的标识符,以便排序键唯一地定义每一行。让我假设id
是主键。然后你会使用:
where date > @date or (date = @date and id > @id)
CCD_ 6和CCD_。
在一些数据库中,您可以将其表述为:
where (date, id) > (@date, @id)
在许多数据库中,您可以只使用offset/fetch
进行分页,而不必担心确切的逻辑。