作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有包含数据的表格: 对于此表,我需要按 productId 列创建钉扎。我知道 LIMIT N,M,但它适用于行而不是组。例如,对于我的 pegination = 2 的表,我希望检索 productId = 1 和 2 的所有 9 条记录(组数为 2)。
那么如何根据组的数量创建聚标?
我将非常感谢您提供示例的答案。
最佳答案
按组进行分页的一种方法是将产品序列分配给查询。使用变量,这需要一个子查询:
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;
关于mysql - 如何在MySQL中选择特定数量的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29318004/
我是一名优秀的程序员,十分优秀!