计算MYSQL值的存在(不为空)

时间:2013-09-09 16:41:30

标签: mysql sql

我有一张这样的表:

id  | module_id | answered 
 1       4           3
 2       4           1
 3       4          NULL
 4       5          NULL 
 5       5           1

我需要计算每个module_id的行数和回答的行数不是NULL。

所以我需要结果

module_id  | row_count  |  answered
    4            3            2
    5            2            1

到目前为止我已经

SELECT module_id, COUNT(*) as row_count FROM table GROUP BY module_id

但我不知道如何回答专栏。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

 COUNT(answered)

将计算该特定列中的非空值。

这就是COUNT(*)比COUNT(某些列)快得多的原因。

答案 1 :(得分:0)

如果使用COUNT(列),它将只计算非空值行。

计数功能有三种变体:

  • COUNT(*)计算所有行
  • COUNT(列)仅计算非NULL值
  • COUNT(1)与COUNT(*)相同,因为1是非空表达式

您对COUNT(*)或COUNT(列)的使用应仅基于所需的输出。