【发布时间】:2010-09-15 05:58:26
【问题描述】:
我对@987654321@ 完全陌生。我有一个类似这样的简单选择查询:
SELECT COUNT(col1) FROM table1
表中有大约 120 条记录,并显示在 GUI 上。
由于某种原因,此查询总是返回一个小于实际计数的数字。
有人可以帮帮我吗?
【问题讨论】:
标签: sql sql-server-2005 tsql
我对@987654321@ 完全陌生。我有一个类似这样的简单选择查询:
SELECT COUNT(col1) FROM table1
表中有大约 120 条记录,并显示在 GUI 上。
由于某种原因,此查询总是返回一个小于实际计数的数字。
有人可以帮帮我吗?
【问题讨论】:
标签: sql sql-server-2005 tsql
试试
select count(*) from table1
编辑:为了进一步解释,count(*) 为您提供表的行数,包括重复项和空值。 count(isnull(col1,0)) 会做同样的事情,但稍微慢一些,因为必须对每一行评估 isnull。
【讨论】:
您可能在 col1 列中有一些空值。聚合函数忽略空值。 试试这个
SELECT COUNT(ISNULL(col1,0)) FROM table1
【讨论】:
有点切题,但也有好用的
SELECT count(distinct cola) from table1
它为您提供表中不同列的数量。
【讨论】:
你得到了正确的计数
COUNT(*) 返回组中的项目数。这包括 NULL 值和重复项。
COUNT(ALL expression) 计算组中每一行的表达式并返回非空值的数量。
COUNT(DISTINCT expression) 计算组中每一行的表达式并返回唯一、非空值的数量。
在您的情况下,您已经在 COUNT 中传递了列名,这就是为什么您将获得 非空记录计数,现在您在表数据中,您可能在给定列中有空值(col1 )
希望这会有所帮助!
【讨论】: