计数不同怎么可能显示重复项,但分组依据却不显示重复项



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

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

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

和一个计数:

select count(*) from Table

而且我看到非重复计数低于计数(*)。
所以,现在我想实际看到重复项,所以我这样做:

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

现在,由于某种原因,这根本不返回任何记录。 表格太大,我无法在此处显示结果,列太多。

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

谢谢。

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

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

返回具有不同非 NULL 表达式的行数计数 值。

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

相关内容

  • 没有找到相关文章

最新更新