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

问题描述 投票:4回答:4

我是SQL的新手。我有一个类似于这个的简单选择查询:

SELECT COUNT(col1) FROM table1

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

有人能帮帮我吗?

sql sql-server-2005 tsql
4个回答
13
投票

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

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

17
投票

尝试

select count(*) from table1

编辑:为了进一步解释,count(*)为您提供了一个表的行数,包括重复和空值。 count(isnull(col1,0))将做同样的事情,但稍微慢一些,因为必须对每行评估isnull


1
投票

略有切向,但也有用

SELECT count(distinct cola) from table1

它为您提供表中不同列的数量。


0
投票

你得到了正确的数量

根据https://docs.microsoft.com

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

COUNT(ALL表达式)计算组中每行的表达式,并返回非空值的数量。

COUNT(DISTINCT表达式)计算组中每行的表达式,并返回唯一的非空值的数量。

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

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.