首页 > 解决方案 > 如果按赞排序,则 MySQL 分页

问题描述

我正在尝试为 iOS 创建一个社交应用程序,用户可以在其中发布和喜欢。

我使用以下因素制作了应用程序和新闻提要加载帖子:

所以最喜欢的帖子在顶部。

我也在使用分页,所以如果用户向下滚动它会加载更多帖子。


问题是,如果在加载帖子的同时,一些帖子得到了更多的喜欢,那么它可能会返回不正确的排序,+ 结果可能会丢失一些帖子。


例如,在这种情况下,分页仅加载 2 个帖子。

完整的数据库:

POST A: 10 likes
POST B: 8 likes
POST C: 7 likes
POST D: 6 likes

打开应用程序

该应用程序加载以下数据:

POST A: 10 likes
POST B: 8 likes

让我们假设POST C同时获得了+10个赞

(最后看到的帖子是B)

加载更多 2 个帖子后,该应用程序具有以下数据:

POST A: 10 likes
POST B: 8 likes
POST D: 6 likes

我怎么能解决这个问题?

标签: phpmysql

解决方案


如果您正在加载记录并且它们可以同时更改,那么这可能不是最好的方法。因为 POST C 会在 +10 个赞后获胜,所以它不会在第二个帖子加载中显示。

你可以这样展示吗?

  • 帖子 A:10 个赞
  • 帖子 B:8 个赞
  • 帖子 C:17 个赞
  • 帖子 D:6 个赞

如果是肯定的,那么您可以按日期、喜欢而不是仅按喜欢进行查询排序。因为,如果您的前提是像“喜欢排名”一样显示它,那么您不能假设这些值会同时发生变化。实现这一点的唯一方法是一次加载所有排名,然后在记录之间进行分页,同时不会出现更改问题。


推荐阅读