gpt4 book ai didi

mysql - 从数据库中获取带有更改标志的文章

转载 作者:行者123 更新时间:2023-11-30 00:44:07 24 4
gpt4 key购买 nike

我有一个包含数千篇文章的 MySQL 数据库。每篇文章都可以标记为已读或未读(位)。在网络界面中,用户可以选择要显示的文章数量以及是查看所有文章还是仅查看未读的文章。在 Javascript 端,我存储一个 limitStart 值,用于安装下一个查询的 LIMIT。例如,在第一次调用中,我们获取前 3 篇文章,我存储 limitStart=3,在下一次调用中,我要求从 3 开始获取更多文章。

用户可以随时将文章标记为已读,这就是问题所在。如果用户打开了 UNREAD 过滤器,然后将一篇文章标记为已读并请求更多项目,他将错过一篇文章,因为 limitStart 不再是 3(而是 2),因为他实际上已将一篇文章标记为已读。

假设我们在数据库中有这样的文章列表,标记如下:

1 未读
2 阅读
3 未读
4 阅读
5 未读
6 未读
7 未读
8 未读
9未读

在启用 UNREAD 过滤器的第一次调用中,用户获取文章 1,3,5 (SELECT * WHERE UNREAD=1 LIMIT 0,3)。

现在,他将第 3 篇文章标记为已读,并通过以下方式请求更多内容:SELECT * WHERE UNREAD=1 LIMIT 3,3

1 未读
2 阅读
3 *阅读
4 阅读
5 未读
6 未读
7 未读
8 未读
9未读

他获得文章:7、8、9。他错过了第 6 条!!

我不知道如何解决这个显然很简单的问题。

我已经尝试过:

  • 递减计数器:没办法,因为我有更多带有更多状态的标志(例如收藏夹)。并且所有这些标志都会发生这种行为。
  • 使用时间戳并从该时间戳开始:失败,因为项目可以具有相同的时间戳。

感谢您的宝贵时间。

最佳答案

您还可以跟踪 session 期间标记的文档数量,并将计数添加到查询的起始索引中。

未读 = 1
LIMIT 最后位置 + 标记,3

关于mysql - 从数据库中获取带有更改标志的文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532082/

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