我是SQL
的新手。我有一个类似于这个的简单选择查询:
SELECT COUNT(col1) FROM table1
表中有大约120条记录,显示在GUI
上。出于某种原因,此查询始终返回一个小于实际计数的数字。
有人能帮帮我吗?
您可能在col1列中有一些空值。聚合函数忽略空值。试试这个
SELECT COUNT(ISNULL(col1,0)) FROM table1
尝试
select count(*) from table1
编辑:为了进一步解释,count(*)
为您提供了一个表的行数,包括重复和空值。 count(isnull(col1,0))
将做同样的事情,但稍微慢一些,因为必须对每行评估isnull
。
略有切向,但也有用
SELECT count(distinct cola) from table1
它为您提供表中不同列的数量。
你得到了正确的数量
COUNT(*)返回组中的项目数。这包括NULL值和重复项。
COUNT(ALL表达式)计算组中每行的表达式,并返回非空值的数量。
COUNT(DISTINCT表达式)计算组中每行的表达式,并返回唯一的非空值的数量。
在您的情况下,您已经在COUNT中传递了列名,这就是为什么您将得到非空记录的数量,现在您在表数据中可能在给定列(col1)中具有空值
希望这可以帮助!