我有以下查询:
select column_name, count(column_name) from table group by column_name having count(column_name) > 1;
如果我替换所有对count(column_name)to 的调用会有什么不同count(*)?
count(column_name)
count(*)
这个问题的灵感来自如何在 Oracle 的表中找到重复值?.
为了澄清接受的答案(也许是我的问题),替换count(column_name)为count(*)将在结果中返回一个额外的行,其中包含 a和列中的值null计数。null
null
count(*)计算 NULL 并且count(column)不计算
count(column)
[编辑] 添加此代码以便人们可以运行它
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