gpt4 book ai didi

php - MySQL查询结果偏移有限制并有新结果的可能性吗?

转载 作者:行者123 更新时间:2023-11-30 01:19:45 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序使用滚动加载系统,当您滚动时,一次将 20 个左右的结果加载到提要中。该提要由不断添加的用户生成的内容组成。这意味着结果集可以根据偏移 X 的查询进行更改。

假设我们加载 20 个结果,然后滚动另一个 20 个结果,然后在滚动更多内容以加载下一个 20 个结果之前,另一个用户上传了一条新内容,这实际上会在下一组 20 个结果中呈现重复内容Feed 的结果,因为我们使用 OFFSET 来获取其他结果,并且随着符合查询条件的新内容的添加,总结果集将移动 1。

解决这个问题最好、最有效的方法是什么?我们尝试过在 where 条件中使用行的 id 来防止重复结果,并且仅对获取的新结果使用不带偏移量的 limit .. 因此我们可以执行 WHERE id < 170 LIMIT 20, WHERE id < 150 LIMIT 20, WHERE id < 130 LIMIT 20 等...以控制和防止重复...但是,这并不适用于所有可能的情况,因为我们的结果集并不总是按照按 DESC 排序的 id 列进行排序..

所以..还有什么其他选择?..

最佳答案

为什么使用 where 子句而不是带有 offset 选项的 limitLimit 可以接受两个参数。 offset 参数似乎完全符合您的要求。例如:

limit 100, 20

从第 101 行开始占用 20 行。然后:

limit 120, 20

从第 121 行开始占用 20 行。 (MySQL 计数中偏移量从 0 开始,而不是从 1 开始。)

您需要进行的一项增强功能是确保记录的排序顺序稳定。从本质上讲,稳定排序是指不存在具有相同值的排序键的排序。要实现这一点,只需将 id 列设置为排序中的最后一列即可。它是唯一的,因此如果存在任何重复的排序键,则添加 id 可使排序稳定。

关于php - MySQL查询结果偏移有限制并有新结果的可能性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com