SQL为count()返回0,但是使用简单的SELECT返回多行

J. *_*Cal 1 sql database ms-access

对不起,如果我的问题的措辞不是很清楚.

我在下面运行这个简单的查询

SELECT count(cg)
FROM all_data
WHERE cg is null
Run Code Online (Sandbox Code Playgroud)

并且结果是0.当我运行此查询时

SELECT cg
FROM all_data
WHERE cg is null
Run Code Online (Sandbox Code Playgroud)

并获得一堆符合标准的记录.很明显很多记录的cg值为null,但它们不会出现在count()查询中.

是否有一个原因?难道我做错了什么?

谢谢你的帮助

pet*_*erm 5

聚集体(COUNT(),SUM()等)忽略NULL值.

使用COUNT(*)来算符合条件的所有行.

SELECT COUNT(*)
  FROM all_data
 WHERE cg IS NULL
Run Code Online (Sandbox Code Playgroud)

进一步阅读 - 计数功能(Microsoft Access SQL):

除非expr是星号(*)通配符,否则Count函数不会计算具有Null字段的记录.如果使用星号,Count会计算记录总数,包括那些包含Null字段的记录.Count(*)比Count([Column Name])快得多.