Sql 为什么SELECT DISTINCT返回的行数与COUNT(DISTINCT)返回的行数不同?
我只是在我的一些Informix SQL列(在同一个表中)上注意到了一些奇怪的东西。当我做这个查询时Sql 为什么SELECT DISTINCT返回的行数与COUNT(DISTINCT)返回的行数不同?,sql,database,count,distinct,informix,Sql,Database,Count,Distinct,Informix,我只是在我的一些Informix SQL列(在同一个表中)上注意到了一些奇怪的东西。当我做这个查询时 SELECT DISTINCT colName FROM myTable 例如,我有40行。但当我这么做的时候 SELECT COUNT(DISTINCT colName) FROM myTable 我得到的数字要大得多(比如,300)。但是,在某些列上它可以工作(行数和计数结果相等)。如果我这样做: SELECT colName FROM myTable 我得到的行数与 SELECT C
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
返回的行号在某些列上不同,而在其他列上不同?在MyAdventureWorks上尝试了这一点。在SQL Server 2012中似乎运行良好
SELECT count(distinct city)
FROM [MyAdventureWorks].[Person].[Address]
575
19614行
select distinct city
from [MyAdventureWorks].[Person].[Address]
575行根据on计数
:
明显的
指定COUNT返回唯一的非空值的数目
另一方面,选择DISTINCT
,将在结果集中包含空值
不确定这是否能让您找到解决方案,但我怀疑空值与此有关。您的接口是否会限制返回的行数?@GordonLinoff不,我检查了这个。这种情况也发生在小数字(如7和10)上,接口应该明确不限制任何内容
按colName从myTable GROUP中选择COUNT(*)
@Haneev然后我得到常规的选择DISTINCT
上的行数,但每行的数加起来等于COUNT(DISTINCT)
的值。您是否能够提供在没有敏感数据的新表上复制该值的步骤?这将有助于解决问题。
select distinct city
from [MyAdventureWorks].[Person].[Address]