我刚注意到我的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
返回的行号在某些列上有所不同而在其他列上不同?
答案 0 :(得分:2)
根据MenuItem
上的MSDN documentation:
另一方面,DISTINCT 指定COUNT返回唯一非空值的数量。
COUNT
将在结果集中包含空值。
不确定是否能让您一直找到解决方案,但我怀疑空值与它有关。
答案 1 :(得分: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行