select * from tabName limit 25
通过上面的查询我得到25行,我想在这个结果中添加一个限制,每组5个记录。
有可能吗?
答案 0 :(得分:2)
请参阅我对How to SELECT the newest four items per category?的答案,了解标准解决方案。这个问题经常在StackOverflow上出现,我们尝试将其标记为greatest-n-per-group
。但在大多数情况下,人们会询问每组最大的 1 ,使用不同的解决方案。
请注意,针对每组最大n的解决方案要求您对每个组中的行的
对于不关心顺序的解决方案,MySQL没有ANSI SQL:2003窗口函数,因此解决这个问题有点尴尬。但你可以用一些用户变量技巧来做到这一点:
SET @g := NULL;
SET @n := 0;
SELECT * FROM (
SELECT IF(groupCol = @g, @n:=@n+1, @n:=1) AS n, @g:=groupCol AS groupCol, *
FROM tabName
-- put ORDER BY here if applicable
) AS t
WHERE n <= 5;
将5
替换为您希望放在每组行上的任何其他限制。