Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么SELECT DISTINCT返回的行数与COUNT(DISTINCT)返回的行数不同?_Sql_Database_Count_Distinct_Informix - Fatal编程技术网

Sql 为什么SELECT DISTINCT返回的行数与COUNT(DISTINCT)返回的行数不同?

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

我只是在我的一些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
返回的行号在某些列上不同,而在其他列上不同?

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