选择与条件匹配的行数(按MySQL中的ID增量分组)

时间:2018-12-31 18:52:40

标签: mysql sql select

我有一个表,该表具有自动递增的数字基数。我试图获取与按主键增量分组的条件相匹配的行数。给定数据:

Proxy

如果我想知道每五行有多少行与| id | value | |----|-------| | 1 | a | | 2 | b | | 3 | a | | 4 | a | | 5 | b | | 6 | a | | 7 | b | | 8 | a | | 9 | b | | 10 | b | | 11 | a | | 12 | b | 相匹配,结果应该是:

value = 'a'

我可以在| count(0) | |----------| | 3 | | 2 | | 1 | 语句中嵌套一系列子查询,例如:

SELECT

但是有没有一种方法可以使用SELECT (SELECT count(0) FROM table WHERE value = 'a' AND id > 0 AND id <= 5) AS `1-5`, (SELECT count(0) FROM table WHERE value = 'a' AND id > 5 AND id <=10) AS `6-10`, ... 语句或类似的方法而无需手动写出增量?如果不是,是否像上面的示例中那样,GROUP BY语句中的一系列子查询比其他子查询更省时?

2 个答案:

答案 0 :(得分:1)

您可以将ID除以5,然后ceil结果:

SELECT   CONCAT((CEIL(id / 5.0) - 1) * 5, '-', CEIL(id / 5.0) * 5), COUNT(*)
FROM     mytable
WHERE    value = 'a'
GROUP BY CEIL(id / 5.0)

答案 1 :(得分:1)

以下聚合查询应该可以解决问题:

SELECT CEIL(id/5), COUNT(*)
FROM table
WHERE value = 'a'
GROUP BY CEIL(id/5)