【发布时间】:2012-01-03 21:57:36
【问题描述】:
如果这个解释不是 100% 清楚,我提前道歉。
我正在尝试根据用户的评分按顺序列出用户(然后按用户 ID 排序)。我实际上是在尝试对结果进行分页,因为可能会有大量结果。
我有两张桌子:
- 表 A:带有“userid”列
- 表 B:包含“rating”、“userid”和“groupid”列
还有其他列,但这些是这里的相关列。
每个用户都可以使用以下值提交组的评分:-1、0 或 1,这些值记录在“评分”中。通过获取与给定组对应的“状态”评级的净总和来评估每个组的净评级。
我有这个基本查询:
SELECT groupid, userid, SUM(rating)
FROM A LEFT JOIN B ON A.userid = B.userid
GROUP BY A.userid
ORDER BY SUM(rating) DESC, A.userid ASC
但是,我想分页,所以我需要能够根据之前显示的最后一个用户 ID 选择结果。
通常,根据用户 ID 大于显示的最后一个用户 ID 的任何结果过滤结果是很容易的。但是,由于我是根据 SUM(rating) 对结果进行排序,因此实际上没有顺序排序系统。
即使我在结果中的用户 ID 没有按顺序排序,是否有一种好方法可以过滤我的结果以进行分页?
【问题讨论】:
-
你的主机是什么?还是只是纯 SQL?
-
我能想到的唯一可能在这里工作的是创建另一个表格,其中填充了您的用户 ID 的评级顺序。当评级发生变化时,您将让您保持此更新日期。因此,当您运行整体查询时,请使用此表与您的表 B 连接,并在 order by 子句中使用此 order 字段
标签: php mysql pagination filtering