【问题标题】:keyset pagination for specific to jump page特定于跳转页面的键集分页
【发布时间】:2019-11-13 05:09:55
【问题描述】:

前端的键集分页是否仅适用于下一个和上一个?因为我对它的了解,我可以用那个 N 来保存它。下一个

让我们对第一页说这个查询, SELECT * FROM nameTable ORDER BY ASC id LIMIT 10

我们将最后一个 id 保存在 N

然后为下一个SELECT * FROM nameTable WHERE id > N ORDER BY ASC id LIMIT 10

如果之前只使用 WHERE id < N

如果在客户端想要跳转到第 10 页或返回到第 3 页呢? 你们能告诉我怎么做吗?可以使用keyset吗?

【问题讨论】:

    标签: sql postgresql pagination


    【解决方案1】:

    如果您想进入上一页,请记住 id 的下限和上限。

    要向前滚动 3 页,请使用 LIMIT 30 OFFSET 20 而不是 LIMIT 10。要跳转到第 X 页,请计算 X 与当前页之间的差值,然后将该差值乘以每页的行数。

    这一切都很简单。

    【讨论】:

    • 我还是不明白,如果我限制 30 条,那么它会显示 30 条,是的,对你来说很简单,对我还是初级的人来说不是:D
    • 如果您只想查看最后 10 行,则必须添加 OFFSET 20。我认为这很明显。我已将其添加到答案中。
    • 你能再告诉我一次calculate the difference between X and the current page吗?可以举个例子吗
    • X 和 Y 之间的区别是 Y - X。如果您在第 3 页并想跳到第 11 页,那就是 8。
    • 然后乘以偏移量?
    【解决方案2】:

    使用键集分页您不能跳转到给定页面

    您可以直接转到第一个、最后一个和下一个

    正如 Laurenz 所解释的,您仍然可以从当前展台移动/跳过一些“页面”,但我不确定它的用例是什么。

    键集分页的主要目的是避免使用偏移/跳过 - 限制大数据集,但是如果你想跳转到确切的页面,你必须偏移/跳过关键字。

    通常下一个和上一个功能使用良好的搜索可以提供足够好的用户体验:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多