Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL为count()返回0,但使用简单选择返回多行_Sql_Database_Ms Access - Fatal编程技术网

SQL为count()返回0,但使用简单选择返回多行

SQL为count()返回0,但使用简单选择返回多行,sql,database,ms-access,Sql,Database,Ms Access,对不起,我的问题措辞不太清楚 我在下面运行这个简单的查询 SELECT count(cg) FROM all_data WHERE cg is null 我得到的结果是0。当我运行此查询时 SELECT cg FROM all_data WHERE cg is null 然后得到一堆符合条件的记录。很明显,有许多记录的cg值为null,但它们不会出现在计数查询中 这有什么原因吗?我做错什么了吗 感谢您的帮助聚合计数、总和等。忽略空值 使用COUNT*对符合条件的所有行进行计数 SELECT

对不起,我的问题措辞不太清楚

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

SELECT count(cg)
FROM all_data
WHERE cg is null
我得到的结果是0。当我运行此查询时

SELECT cg
FROM all_data
WHERE cg is null
然后得到一堆符合条件的记录。很明显,有许多记录的cg值为null,但它们不会出现在计数查询中

这有什么原因吗?我做错什么了吗

感谢您的帮助

聚合计数、总和等。忽略空值

使用COUNT*对符合条件的所有行进行计数

SELECT COUNT(*)
  FROM all_data
 WHERE cg IS NULL
进一步阅读-:

除非expr是星号*通配符,否则Count函数不会对具有空字段的记录进行计数。如果使用星号,Count将计算记录总数,包括包含空字段的记录。Count*比Count[列名]快得多

聚合计数、总和等。忽略空值

使用COUNT*对符合条件的所有行进行计数

SELECT COUNT(*)
  FROM all_data
 WHERE cg IS NULL
进一步阅读-:

除非expr是星号*通配符,否则Count函数不会对具有空字段的记录进行计数。如果使用星号,Count将计算记录总数,包括包含空字段的记录。Count*比Count[列名]快得多


如果要计算空值的数量,请使用以下查询

SELECT
SUM(CASE WHEN CG IS NULL THEN 1 END) AMOUNT_CG
FROM all_data

如果要计算空值的数量,请使用以下查询

SELECT
SUM(CASE WHEN CG IS NULL THEN 1 END) AMOUNT_CG
FROM all_data

根据SQL参考手册中关于以下内容的部分,不再遵循上面朋友的提示

除COUNT*和GROUPING之外的所有聚合函数都忽略空值。您可以在聚合函数的参数中使用NVL函数来替换空值。COUNT从不返回null,而是返回数字或零。对于所有剩余的聚合函数,如果数据集不包含任何行,或者只包含作为聚合函数参数的null行,则该函数返回null

因此,根据以上信息,我们可以得出结论,要解决您的问题,请使用count*而不是countcg


根据SQL参考手册中关于以下内容的章节:

除COUNT*和GROUPING之外的所有聚合函数都忽略空值。您可以在聚合函数的参数中使用NVL函数来替换空值。COUNT从不返回null,而是返回数字或零。对于所有剩余的聚合函数,如果数据集不包含任何行,或者只包含作为聚合函数参数的null行,则该函数返回null

因此,根据以上信息,我们可以得出结论,要解决您的问题,请使用count*而不是countcg


如果用count*替换countcg,是否有其他行为?count仅统计非空值。如果用count*替换countcg,是否有其他行为?count仅统计非空值。无论表中有多少空值,这种方法每次都需要进行完整的表扫描,因此在大多数情况下是不合适的cases无论表中有多少空值,这种方法每次都需要进行完整的表扫描,因此在大多数情况下是不合适的