没有在SQL中获得正确的计数

时间:2008-10-04 05:17:37

标签: sql sql-server-2005 tsql

我对SQL完全不熟悉。我有一个类似于这的简单选择查询:

SELECT COUNT(col1) FROM table1

表格中有大约120条记录,显示在GUI上。 出于某种原因,此查询始终返回一个小于实际计数的数字。

有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:17)

尝试

select count(*) from table1

修改:为了进一步说明,count(*)为您提供了一个表的行数,包括重复项和空值。 count(isnull(col1,0))会做同样的事情,但稍微较慢,因为必须为每一行评估isnull

答案 1 :(得分:13)

您可能在col1列中有一些空值。聚合函数忽略空值。 试试这个

SELECT COUNT(ISNULL(col1,0)) FROM   table1

答案 2 :(得分:1)

略有切向,但也有用

SELECT count(distinct cola) from table1

,它给出了表中不同列的数量。

答案 3 :(得分:0)

您得到正确的计数

根据https://docs.microsoft.com

COUNT(*)返回一个组中的项目数。这包括NULL值和重复项。

COUNT(ALL表达式)为组中的每一行评估一个表达式,并返回非空值的数量。

COUNT(DISTINCT表达式)为组中的每一行求一个表达式,并返回唯一的非null 值的数量。

在您的情况下,您已在COUNT中传递了列名,这就是为什么您将获得非空记录的计数的原因,现在您在表数据中,给定列中可能具有空值(col1 )

希望这会有所帮助!