我想在我的数据中查询重复项。
所以,我做的第一件事是我做一个不同的计数:
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
?
感谢。
答案 0 :(得分:0)
您看到的行为可能取决于您使用的数据库。但是,我很确定问题是由列中的NULL
值引起的。例如,MySQL明确地将COUNT(DISTINCT)
描述为:
COUNT(DISTINCT expr,[expr...])
返回具有不同非NULL expr的行数 值。
并非所有数据库都支持COUNT(DISTINCT)
多个表达式。不同的数据库可以不同地处理NULL
值。但是,它们似乎是导致这种差异的最可能原因。