Sql count distinct如何能够显示重复项,而group by却不能?

Sql count distinct如何能够显示重复项,而group by却不能?,sql,apache-spark-sql,Sql,Apache Spark Sql,我想查询数据中的重复项 所以,我要做的第一件事是我做一个计数: select count(distinct colA, colB ....) from Table 还有一个计数: select count(*) from Table 我发现计数distinct低于计数(*)。 所以,现在我想实际看到副本,所以我这样做: select colA, colB, .... count(*) from Table group by colA, colB ... having count(*) &g

我想查询数据中的重复项

所以,我要做的第一件事是我做一个计数:

select count(distinct colA, colB ....) from Table
还有一个计数:

select count(*) from Table
我发现计数distinct低于计数(*)。
所以,现在我想实际看到副本,所以我这样做:

select colA, colB, .... count(*) from Table 
group by colA, colB ... having count(*) > 1;
现在,由于某种原因,它根本不会返回任何记录。表太大,我无法在这里显示结果,列太多

这两者怎么可能都是真的?计数不同,但当我对它们进行分组并筛选
count(*)>1
时,不会显示任何行


谢谢。

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

计数(不同的表达式,[expr…])

返回具有不同非空表达式的行数的计数 价值观


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

用您正在使用的数据库标记您的问题。谢谢。与我正在使用的
sparkSQL
相同: