我有数据表: 对于此表,我需要通过 productId 列创建分页。我知道LIMIT N,M,但它适用于行而不适用于组。对于我的pegination = 2表,我希望用 productId = 1和2(组数为2)检索所有9条记录。
那么如何按群组数量创建分组?
我将非常感谢你的例子。
答案 0 :(得分:1)
试试这个:
select * from
(select * from <your table> where <your condition> group by <with your group>)
LIMIT number;
答案 1 :(得分:1)
按组进行分页的一种方法是为查询分配产品序列。使用变量,这需要一个子查询:
select t.*
from (select t.*,
(@rn := if(@p = productid, @rn + 1,
if(@rn := productid, 1, 1)
)
) as rn
from table t cross join
(select @rn := 0, @p := -1) vars
order by t.productid
) t
where rn between X and Y;
使用t(productid)
上的索引,您也可以使用子查询执行此操作。然后条件可以进入having
子句:
select t.*,
(select count(distinct productid)
from t t2
where t2.productid <= t.productid)
) as pno
from t
having pno between X and Y;