SQL-count()理解

本文探讨了SQL查询中count(1)和count(*)用于计算记录数的区别和效果。尽管两者在实践中几乎没有差异,但count(1)实际上构造了一个虚拟的1列进行计数。同时,count(list_name)仅统计指定列非空值的数量,而count(expr)则统计表达式有值的结果。通过对不同用法的分析,加深了对SQL计数函数的理解。
摘要由CSDN通过智能技术生成

@TOC


前言

本文主要记录count()操作的相关笔记,在刷SQL题的时候突然发现有人计算记录数时使用了count(1),令我颇为不解,然后就跑去搜,感觉还挺有意思的,写个博文记录一下目前我的理解,目前的结论时count(1)和count(*)用来计算记录数时的效果甚至是速度方面几乎是没有差异的,但是可以对这个count(1)有一个更深的理解。


1. count(*)

select count(*) from table

2. count(1)/count(n)

将数字1作为列统计,实际是自动构造了一个虚拟值为1的列,当然这个值不一定要为1,也可以是任意整数,包括复数也可以。我们可以做个实验,比如直接

select -1,table.* from table
从查询结果可以看到,其实数字可以看作是一个具体的一列,当这个具体的数字放到count()里时就可以把具体的数字当作常量表达式,其实就是对这个常量表达式列进行求count()。count()的结果如下: ```c select count(-1),count(*) from table ``` 结果如下: # 3. count(list_name) list_name代表列名,此时count()只会统计list_name列的数量(如果不含null值时可以当作在统计行数)。在统计列值时只统计非空列值(不统计NULL)。 # 4. count(expr) expr代表表达式,统计这个表达式有值的结果数,如果值为null则不统计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sky-JT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值