Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否可以对团队规模施加限制?_Mysql_Limit_Greatest N Per Group - Fatal编程技术网

Mysql 是否可以对团队规模施加限制?

Mysql 是否可以对团队规模施加限制?,mysql,limit,greatest-n-per-group,Mysql,Limit,Greatest N Per Group,通过上面的查询,我得到了25行,我想在这个结果中为每个组添加5条记录的限制 可能吗?有关标准溶液,请参阅我的答案。这个问题经常出现在StackOverflow上,我们尝试将其标记为最大的每个组n个。但在大多数情况下,人们会问每个群体中最大的1个,使用不同的解决方案 请注意,每个组最大n行的大多数解决方案都要求您对每个组中的行顺序有一些了解,因此您的查询可以决定哪些行属于结果集中,哪些是应该排除的额外行 对于一个不关心顺序的解决方案,MySQL没有ANSI SQL:2003窗口函数,所以解决这个问

通过上面的查询,我得到了25行,我想在这个结果中为每个组添加5条记录的限制

可能吗?

有关标准溶液,请参阅我的答案。这个问题经常出现在StackOverflow上,我们尝试将其标记为最大的每个组n个。但在大多数情况下,人们会问每个群体中最大的1个,使用不同的解决方案

请注意,每个组最大n行的大多数解决方案都要求您对每个组中的行顺序有一些了解,因此您的查询可以决定哪些行属于结果集中,哪些是应该排除的额外行

对于一个不关心顺序的解决方案,MySQL没有ANSI SQL:2003窗口函数,所以解决这个问题有点尴尬。但您可以通过一些用户变量技巧来实现:

select * from tabName limit 25

将5替换为您希望对每组行设置的任何其他限制。

Downvoter,请将OP a bone扔给他,并告诉他原因:这是MySQL n-per-group中臭名昭著的糟糕处理,类似于最大的n-per-group。我添加了best-n-per-group标签,因为这些方法都可以使用,因为它只是n-per-group的一种改进。我希望新的相关答案会有用。
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;