【问题标题】:Why does SELECT DISTINCT return a different number of rows than COUNT(DISTINCT)?为什么 SELECT DISTINCT 返回的行数与 COUNT(DISTINCT) 不同?
【发布时间】:2014-12-08 22:24:38
【问题描述】:

我刚刚注意到我的 Informix SQL 列(在同一个表中)一些有些奇怪。当我做这个查询时

SELECT DISTINCT colName
FROM myTable

例如,我得到 40 行。但是当我这样做时

SELECT COUNT(DISTINCT colName)
FROM myTable

我得到一个大得多的数字(例如,300)。但是,在某些列上它可以工作(行数和计数结果相等)。如果我这样做:

SELECT colName
FROM myTable

我得到的行数相同

SELECT COUNT(*)
FROM myTable

给出另一个(高得多的)数字 nameley 表中所有行的确切数量。

为什么 COUNT (DISTINCT) 返回的数字和常规 SELECT DISTINCT 返回的行号在某些列上不同,而在其他列上却没有?

【问题讨论】:

  • 您的界面会限制返回的行数吗?
  • @GordonLinoff 不,我检查了这个。它也发生在接口应该定义不限制任何东西的小数字(如 7 和 10)上。
  • 如果您使用以下查询,计数是多少? SELECT COUNT(*) FROM myTable GROUP BY colName
  • @Haneev 然后我得到了常规SELECT DISTINCT 上的行数,但每行的数字加起来就是COUNT (DISTINCT) 的值
  • 您能否提供在没有敏感数据的新表上重现此问题的步骤?这对帮助很有用。

标签: sql database count distinct informix


【解决方案1】:

根据COUNT上的MSDN documentation

与众不同 指定 COUNT 返回唯一 nonnull 值的数量。

另一方面,SELECT DISTINCT 将在结果集中包含空值。

不确定这是否能让你找到解决方案,但我怀疑 null 值与它有关。

【讨论】:

    【解决方案2】:

    在 MyAdventureWorks 上试过这个。似乎在 SQL Server 2012 中运行良好。

    SELECT count(distinct city)
      FROM [MyAdventureWorks].[Person].[Address]
    

    575

    select count(city)
    FROM [MyAdventureWorks].[Person].[Address]
    

    19614 行

    select distinct city
    from [MyAdventureWorks].[Person].[Address]
    

    575 行

    【讨论】:

      猜你喜欢
      • 2017-12-19
      • 2015-01-28
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2011-03-30
      • 2020-04-05
      相关资源
      最近更新 更多