当前位置: 首页 > news >正文

count(1),count(列名),count(*)详解!

在这里插入图片描述

目录

    • 一、核心区别:
    • 二、总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解MySQL的explain执行计划请看: MySQL的explain执行计划你真的了解吗?建议收藏!

其他优质专栏: 【🎇SpringBoot】【🎉多线程】【🎨Redis】【✨设计模式专栏(已完结)】…等

如果喜欢作者的讲解方式,可以点赞收藏加关注,你的支持就是我的动力
✨更多文章请看个人主页: 码熔burning

好,咱们来详细聊聊 COUNT(1)COUNT(*)COUNT(列名) 这三个 SQL 函数的区别,保证你一看就懂!

一、核心区别:

  • COUNT(*) 统计表中的总行数,包含 NULL 值的行。
  • COUNT(1) 统计表中的总行数,包含 NULL 值的行。 它实际上是往表中加了一个值为 1 的列,然后统计这个列的行数。
  • COUNT(列名) 统计指定列中NULL 值的行数。 如果某行该列的值是 NULL,则不会被计入。

解释:

想象你是一个图书管理员,要统计图书馆里的书籍数量:

  • COUNT(*) 你直接数图书馆里所有的书架,不管书架上有没有书,都算一个。 这就是统计表里所有行,不管有没有数据。
  • COUNT(1) 你给每个书架贴一个标签,写上数字 “1”,然后数有多少个标签。 结果和 COUNT(*) 一样,都是统计所有书架。
  • COUNT(书名) 你只数有书的书架,如果某个书架是空的(书名 列是 NULL),就不算。 这就是统计指定列非 NULL 值的行。

实际例子:

假设我们有一个 students 表,包含以下数据:

idnameagecity
1Alice20New York
2Bob22London
3CarolNULLParis
4David21NULL
5Eve23Tokyo

现在,我们执行以下 SQL 查询:

  1. SELECT COUNT(*) FROM students;

    结果:5

    解释:统计 students 表的总行数,包括 CarolDavid 的行,因为它们也是表中的行。

  2. SELECT COUNT(1) FROM students;

    结果:5

    解释:和 COUNT(*) 一样,统计 students 表的总行数。

  3. SELECT COUNT(age) FROM students;

    结果:4

    解释:统计 age 列中非 NULL 值的行数。 CarolageNULL,所以不计入。

  4. SELECT COUNT(city) FROM students;

    结果:4

    解释:统计 city 列中非 NULL 值的行数。 DavidcityNULL,所以不计入。

性能考虑:

  • 在大多数情况下,COUNT(*)COUNT(1) 的性能几乎没有差别,优化器通常会进行优化。 它们通常比 COUNT(列名) 更快,因为不需要读取特定列的数据。
  • COUNT(列名) 需要读取指定列的数据,如果该列没有索引,可能会导致性能下降。

二、总结

函数作用是否包含 NULL 值的行性能
1Alice20New York
2Bob22London
3CarolNULLParis
4David21NULL
5Eve23Tokyo

什么时候用哪个?

  • COUNT(*)COUNT(1) 当你需要知道表中有多少行数据时,这是最常用的。
  • COUNT(列名) 当你需要知道某个特定列有多少个非 NULL 值时,例如,统计有多少学生填写了年龄信息。

希望这篇文章能够帮助你理解 COUNT(*)COUNT(1)COUNT(列名) 的区别! 记住,理解它们的核心在于是否统计 NULL 值的行。

相关文章:

  • 系统思考全球化落地
  • 【DeepSeek应用】本地部署deepseek模型后,如何在vscode中调用该模型进行代码撰写,检视和优化?
  • Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流
  • 操作系统——进程优先级切换调度与调度算法
  • 【从零开始学习计算机科学】设计模式(二)工厂模式、抽象工厂模式、单例模式、建造者模型、原型模式
  • 一级运动员最小几岁·棒球1号位
  • ThinkPad T480s更换开机BIOS图片的详细步骤
  • KNN算法原理及python代码实现
  • PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码
  • RabbitMQ可靠性进制
  • C语言每日一练——day_9
  • 【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集
  • Flask应用调试模式下外网访问的技巧
  • Day5 结构体、文字显示与GDT/IDT初始化
  • MySQL查询语句之like
  • Flask从入门到精通--初始Flask
  • 黑马node.js教程(nodejs教程)——AJAX-Day01-04.案例_地区查询——查询某个省某个城市所有地区(代码示例)
  • 五种最新优化算法(ALA、AE、DOA、GOA、OX)求解多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • dubbo nacos配置详解
  • 【electron】vue项目中使用electron打包报错的解决办法
  • 大型长读长RNA测序数据集发布,有助制定精准诊疗策略
  • 浦发银行一季度净利175.98亿增1.02%,不良率微降
  • 交通运输部:预计今年五一假期全社会跨区域人员流动量将再创新高
  • 马上评丨又见酒店坐地起价,“老毛病”不能惯着
  • 大学男生被捉奸后将女生推下高楼?桂林理工大学辟谣
  • 葡萄牙、西班牙突发大范围停电,交通和通信服务受到严重影响