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

标签 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 COUNT(*)
FROM myTable

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

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

最佳答案

根据MSDN documentationCOUNT 上:

DISTINCT Specifies that COUNT returns the number of unique nonnull values.

另一方面,

SELECT DISTINCT 将在结果集中包含空值。

不确定这是否能让您一路找到解决方案,但我怀疑空值与此有关。

关于sql - 为什么 SELECT DISTINCT 返回的行数与 COUNT(DISTINCT) 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355504/

相关文章:

sqlite3 准备、绑定(bind)和重置语句

MySQL - 选择列与链接列表中任意位置的条目匹配的行

tsql - 内连接计数和分组依据

.net - 更改结果集的排序顺序 'fairly'

sql - 如何有效刷新昂贵查询的结果?

c# - 使用 ISNULL 函数会引发错误

c# - System.Data.SqlClient.SqlException 与网络相关或特定于实例的错误

SQL - 在连接查询中只计算一个表条目

c - 指令类型和数量

mysql - SQL-使用一个元组中的值从另一个元组中获取值