我有以下查询:
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和计数null列中的值。
count(*)计数为NULL而count(column)不是
count(*)
NULL
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