为什么SELECT DISTINCT返回的行数不是COUNT(DISTINCT)?

问题描述 投票:3回答:2

我刚注意到我的一些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返回的行号在某些列上有所不同而在其他列上不同?

sql database count distinct informix
2个回答
2
投票

根据MSDN documentation上的COUNT

DISTINCT指定COUNT返回唯一非空值的数量。

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

不确定这是否会让你一直到解决方案,但我怀疑空值与它有关。


1
投票

在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行

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