如何在MySQL中选择一定数量的组?

时间:2015-03-28 13:58:36

标签: mysql sql

我有数据表: ID|     对于此表,我需要通过 productId 列创建分页。我知道LIMIT N,M,但它适用于行而不适用于组。对于我的pegination = 2表,我希望用 productId = 1和2(组数为2)检索所有9条记录。

那么如何按群组数量创建分组?

我将非常感谢你的例子。

2 个答案:

答案 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;