为了账号安全,请及时绑定邮箱和手机立即绑定

在SQL中,count(列)和count(*)之间有什么区别?

在SQL中,count(列)和count(*)之间有什么区别?

Smart猫小萌 2019-08-15 16:37:52
在SQL中,count(列)和count(*)之间有什么区别?我有以下查询:select column_name, count(column_name)from tablegroup by column_namehaving count(column_name) > 1;会有什么区别,如果我更换了所有调用count(column_name)到count(*)?为了澄清已接受的答案(也许是我的问题),替换count(column_name)为count(*)将在结果中返回一个额外的行,其中包含a null和null列中的值计数。
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

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


查看完整回答
反对 回复 2019-08-15
?
FFIVE

TA贡献1797条经验 获得超6个赞

使用*和特定列之间的另一个细微差别是,在列情况下,您可以添加关键字DISTINCT,并将计数限制为不同的值:

select column_a, count(distinct column_b)from tablegroup by column_ahaving count(distinct column_b) > 1;


查看完整回答
反对 回复 2019-08-15
?
交互式爱情

TA贡献1712条经验 获得超3个赞

另一个也许是微妙的区别是,在某些数据库实现中,count(*)是通过查看有问题的表上的索引而不是实际的数据行来计算的。由于没有指定特定的列,因此无需为实际的行及其值而烦恼(如果您计算了特定的列,则会如此)。允许数据库使用索引数据可能比将其计为“实际”行要快得多。


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 2304 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信