如何解决SQL中count1是什么意思?
select patientID,count(1)
from dbo (nolock)
where admissiontime between '2020-01-31' and '2020-02-01'
patientID in (0,1)
/*
0 means arthritis
1 means asthma
*/
因此,以上查询用于查找医院针对哮喘和关节炎相关病例提出的要求。
它由patientID
放在一个组中,但是count(1)
意味着它计数了所有PatientID吗?
解决方法
count(1)
基本上产生与count(*)
相同的结果:也就是说,它计算由group by
子句定义的组中的记录数。
为什么? count(<expr>)
对null
的每个非<expr>
值进行计数。这里给它一个常数值1
,它永远不会null
-因此它计算所有行。
我不推荐count(1)
;检查每一行是否为空需要仅计算所有行的数据库工作。某些数据库可能在幕后将count(1)
优化为count(*)
(很明显,这个固定表达式永远不会是null
),但是当您已经可以优化自己时,为什么还要打扰呢?只需持续使用count(*)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。