使用COUNT()和GROUP BY时如何包含NULL计数,因为COUNT忽略了MySQL中的NULL?

时间:2017-03-10 22:55:30

标签: mysql count group-by null

当使用所谓的COUNT函数时,MySQL无法计算NULL值。

例如,我们有一个简单的表:

supplier_id   supplier_name state
1             IBM           CA
2             Microsoft   
3             NVIDIA     

此查询:

SELECT 
  state
, COUNT(state) 
FROM atable
GROUP BY state
;

将返回

CA    1

我如何修改它以向我展示表格的真实性质,即

CA    1
NULL  2

2 个答案:

答案 0 :(得分:2)

使用COALESCE:

SELECT ...., COUNT (COALESCE (state, 'unknown')) ....

答案 1 :(得分:2)

只需使用count(*)来计算带有空值的行数。

SELECT state, count(*) FROM atable GROUP BY state;

count(*)count(state)之间的区别在于前者不计算空值。您可以在the docs中找到详细信息和示例。