怎么可能 count distinct 显示重复项,而 group by 却不显示重复项?

How is it possible for count distinct to show duplicates, but group by does not?

我想查询我的数据中的重复项。

所以,我做的第一件事就是进行不同的计数:

select count(distinct colA, colB ....) from Table

和计数:

select count(*) from Table

而且我看到 count distinct 低于 count(*)。
所以,现在我想真正看到重复项,所以我这样做:

select colA, colB, .... count(*) from Table 
group by colA, colB ... having count(*) > 1;

现在,出于某种原因,这 return 根本没有任何记录。 table 太大,我无法在此处显示结果,而且列数太多。

这两个怎么可能是真的?计数不同,但是当我对它们进行分组并过滤 count(*) >1?

时,没有显示任何行

谢谢。

您看到的行为可能取决于您使用的数据库。但是,我很确定问题出在列中的 NULL 值。例如,MySQL 明确地将 COUNT(DISTINCT) 描述为:

COUNT(DISTINCT expr,[expr...])

Returns a count of the number of rows with different non-NULL expr values.

并非所有数据库都支持 COUNT(DISTINCT) 多个表达式。不同的数据库可能会以不同的方式处理 NULL 值。但是,它们似乎是造成差异的最可能原因。