Php 分页过滤
如果这个解释不是100%清楚,我提前道歉 我试图根据用户的评分(然后根据用户ID)按顺序列出用户。我实际上是在尝试对结果进行分页,因为可能会有大量的结果 我有两张桌子:Php 分页过滤,php,mysql,pagination,filtering,Php,Mysql,Pagination,Filtering,如果这个解释不是100%清楚,我提前道歉 我试图根据用户的评分(然后根据用户ID)按顺序列出用户。我实际上是在尝试对结果进行分页,因为可能会有大量的结果 我有两张桌子: 表A:列为“userid” 表B:列为“rating”和“userid”以及“groupid” 还有其他专栏,但这些都是相关的 每个用户都可以使用以下值提交组的评级:-1、0或1,记录在“评级”中。通过获得与给定组相对应的“状态”评级的净总和来评估每个组的净评级 我有一个基本问题: SELECT groupid, useri
- 表A:列为“userid”
- 表B:列为“rating”和“userid”以及“groupid”
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选择结果
通常,根据userid大于显示的最后一个userid的任何结果来过滤结果是很容易的。但是,由于我是根据总和(评级)对结果排序的,因此实际上没有顺序排序系统
即使结果中的用户ID不是按顺序排列的,是否有一种很好的方法可以过滤我的结果以进行分页?您是否尝试过使用带偏移量的限制
您是否尝试过使用带偏移量的限制
您托管的ide是什么?或者仅仅是纯SQL?我认为这里唯一可行的方法是创建另一个表,其中填充了用户ID的评级顺序。当评级发生变化时,您必须保持此更新。因此,当您运行整体查询时,请使用此表与表B连接,并在order by子句中使用此order字段。您托管的ide是什么?或者仅仅是纯SQL?我认为这里唯一可行的方法是创建另一个表,其中填充了用户ID的评级顺序。当评级发生变化时,您必须保持此更新。所以,当您运行整体查询时,使用这个表与表B连接,并在order by中使用这个order字段,我试过了。带偏移量的限值可以正常工作。问题是获取“下一个”用户,该用户将基于显示的最后一个用户ID。在我用类似于?p=29的东西解析url中的第一行之前,然后只是偏移限制,将1添加到该行号上,尝试了……问题是结果是基于总和(评级)而不是用户ID排序的。因为结果不是按用户ID顺序列出的,所以我不能指定像?p=29这样的东西。我用自己的一个db表做了一个小例子,并限制了我对非ID行数的工作。如果我在带有sum列的语句末尾加上“limit 30,20”,它将直接进入第30行并显示结果。忘了是回邮了!这是我开始的查询…但是我需要添加限制偏移量(限制0,10)例如-这不是问题。但是,我还需要一个语句,该语句将只选择使用“最后一个”用户标识之后的结果。问题是,对userid进行简单的比较是行不通的,因为结果不是基于userid的顺序。是的,我试过了。带偏移量的限值可以正常工作。问题是获取“下一个”用户,该用户将基于显示的最后一个用户ID。在我用类似于?p=29的东西解析url中的第一行之前,然后只是偏移限制,将1添加到该行号上,尝试了……问题是结果是基于总和(评级)而不是用户ID排序的。因为结果不是按用户ID顺序列出的,所以我不能指定像?p=29这样的东西。我用自己的一个db表做了一个小例子,并限制了我对非ID行数的工作。如果我在带有sum列的语句末尾加上“limit 30,20”,它将直接进入第30行并显示结果。忘了是回邮了!这是我开始的查询…但是我需要添加限制偏移量(限制0,10)例如-这不是问题。但是,我还需要一个语句,该语句将只选择使用“最后一个”用户标识之后的结果。问题是,对userid进行简单的比较是行不通的,因为结果不是基于userid的顺序。