怎么可能 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
值。但是,它们似乎是造成差异的最可能原因。
我想查询我的数据中的重复项。
所以,我做的第一件事就是进行不同的计数:
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
值。但是,它们似乎是造成差异的最可能原因。