php - 如果按赞排序,则 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
我怎么能解决这个问题?
解决方案
如果您正在加载记录并且它们可以同时更改,那么这可能不是最好的方法。因为 POST C 会在 +10 个赞后获胜,所以它不会在第二个帖子加载中显示。
你可以这样展示吗?
- 帖子 A:10 个赞
- 帖子 B:8 个赞
- 帖子 C:17 个赞
- 帖子 D:6 个赞
如果是肯定的,那么您可以按日期、喜欢而不是仅按喜欢进行查询排序。因为,如果您的前提是像“喜欢排名”一样显示它,那么您不能假设这些值会同时发生变化。实现这一点的唯一方法是一次加载所有排名,然后在记录之间进行分页,同时不会出现更改问题。
推荐阅读
- javascript - Ant Design - 过滤后如何获取表格行数?
- android - 如何在不知道列表总大小的情况下使用 PagedList 占位符
- php - 为什么我的 PHP/HTML 表单没有向我发送数据
- java - 将字符串解析为日期时间不会返回正确的时间
- android - 在我的应用程序中获取权限时获取空数组
- python - 如何在熊猫中选择可变数量的列匹配的行?
- java - 如何在不连接到电子邮件服务器的情况下创建空 IMAPMessage?
- c++ - 使用存储在 std::any 中的 std::map ,然后通过 std::any_cast 访问
- c# - Unity C#循环一些文本而不重复它们
- javascript - 在响应式 D3 svg 上垂直居中一个圆