【问题标题】:Not getting the correct count in SQL在 SQL 中没有得到正确的计数
【发布时间】:2010-09-15 05:58:26
【问题描述】:

我对@9​​87654321@ 完全陌生。我有一个类似这样的简单选择查询:

SELECT COUNT(col1) FROM table1

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

有人可以帮帮我吗?

【问题讨论】:

    标签: sql sql-server-2005 tsql


    【解决方案1】:

    试试

    select count(*) from table1
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        有点切题,但也有好用的

        SELECT count(distinct cola) from table1
        

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

        【讨论】:

          【解决方案4】:

          你得到了正确的计数

          根据https://docs.microsoft.com

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

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

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

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

          希望这会有所帮助!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多