MySQL:在一个查询中统计两件事情?

时间:2010-04-20 14:41:20

标签: mysql count

我的一个表中有一个“布尔”列(值为0或1)。

我需要得到两个计数:布尔值设置为0的行数和将其设置为1的行数。目前我有两个查询:一个计算1,另一个计数0。

在使用WHERE条件计算行时,MySQL是否遍历整个表?我想知道是否有一个查询允许两个计数器根据不同的条件?

或者有没有办法获得WHERE条件计数的总计数?这就足够了,因为我只需要从另一个中减去一个计数(由于列的布尔性质)。没有NULL值。

感谢。

4 个答案:

答案 0 :(得分:7)

您可以按布尔列对记录进行分组,并为每个组获取计数。

 SELECT bool_column, COUNT(bool_column) FROM your_table
 WHERE your_conditions
 GROUP BY bool_column

这显然不仅适用于bool列,还适用于其他数据类型(如果需要)。

答案 1 :(得分:3)

试试这个:

SELECT
    SUM(your_field) as positive_count,
    SUM(IF(your_field, 0, 1)) as negative_count
FROM thetable

答案 2 :(得分:0)

如果它们都是0或1并且你不介意2行作为结果你可以按该字段分组并进行如下计数:

select field, count(field)
from table
group by field

答案 3 :(得分:0)

一个简单的组子句应该可以解决这个问题:

SELECT boolField, COUNT(boolField)
FROM myTable
GROUP BY boolField