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