我有以下疑问:
select column_name, count(column_name)
from table
group by column_name
having count(column_name) > 1;
如果我将所有对count(column_name)的调用替换为count(*),会有什么不同?
这个问题的灵感来自于如何在Oracle中查找表中的重复值。
为了澄清接受的答案(可能是我的问题),将count(column_name)替换为count(*)将在结果中返回一个额外的行,其中包含null值和列中空值的计数。
count(*)计数null值,count(column)不计数
[edit]添加了这段代码,以便人们可以运行它
create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)
select count(*),count(id),count(id2)
from #bla
结果
7 3 2