• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    SQL 中 COUNT 的用法示例详解

    发布者: 福建二哥 | 发布时间: 2025-6-18 09:19| 查看数: 53| 评论数: 0|帖子模式

    1.
    1. COUNT(*)
    复制代码
    :统计总行数
    1. COUNT(*)
    复制代码
    是 SQL 中最常用的统计方式之一。它会统计查询结果集中所有行的数量(包括
    1. NULL
    复制代码
    值)。
    语法:
    1. SELECT COUNT(*) FROM 表名;
    复制代码
    示例: 假设我们有一个
    1. employees
    复制代码
    表,包含以下数据:
    idnameagedepartment1John Doe30Sales2Jane SmithNULLHR3Alice Brown25NULL执行以下查询:
    1. SELECT COUNT(*) FROM employees;
    复制代码
    结果:
    1. 3
    复制代码
    解释:
    1. COUNT(*)
    复制代码
    会统计所有行,不会忽略
    1. NULL
    复制代码
    值,即使某些列有
    1. NULL
    复制代码
    ,它也会计算每一行。因此,结果为
    1. 3
    复制代码
    ,表示表中共有 3 行数据。
    2.
    1. COUNT(1)
    复制代码
    :统计总行数
    1. COUNT(1)
    复制代码
    的作用与
    1. COUNT(*)
    复制代码
    类似,也会统计表中所有的行。它是 SQL 优化中的一个小技巧,某些数据库系统(如 MySQL)会对其进行优化处理。
    语法:
    1. SELECT COUNT(1) FROM 表名;
    复制代码
    解释:
    1. COUNT(1)
    复制代码
    1. COUNT(*)
    复制代码
    的结果是相同的,都会返回表中所有行的数量。数据库会将
    1. 1
    复制代码
    替代成一个常量来参与计算,并且不会关心每一列的具体值。
    优化区别: 在某些数据库系统(如 MySQL)中,
    1. COUNT(1)
    复制代码
    1. COUNT(*)
    复制代码
    在执行计划中的表现可能相同,查询效率基本没有区别。然而,某些旧版的数据库系统在处理
    1. COUNT(*)
    复制代码
    时,会去解析整行数据,而
    1. COUNT(1)
    复制代码
    可以直接统计行数,因此会有一些微小的性能差异。
    3.
    1. COUNT(列名)
    复制代码
    :统计特定列中非 NULL 值的数量
    1. COUNT(*)
    复制代码
    不同,
    1. COUNT(列名)
    复制代码
    只会统计指定列中非 NULL 值的数量。如果某列中有
    1. NULL
    复制代码
    值,
    1. COUNT(列名)
    复制代码
    会自动跳过它们。
    语法:
    1. SELECT COUNT(列名) FROM 表名;
    复制代码
    示例:
    1. SELECT COUNT(age) FROM employees;
    复制代码
    结果
    1. 2
    复制代码
    4.
    1. COUNT(DISTINCT 列名)
    复制代码
    :统计某列中不重复的非 NULL 值的数量
    有时,我们不仅需要统计某列中的非 NULL 值,还需要统计不重复的值。在这种情况下,可以使用
    1. COUNT(DISTINCT 列名)
    复制代码
    来完成这个任务。
    语法:
    1. SELECT COUNT(DISTINCT 列名) FROM 表名;
    复制代码
    示例: 假设我们有以下表数据:
    iddepartment1Sales2HR3Sales4IT查询:
    1. SELECT COUNT(DISTINCT department) FROM employees;
    复制代码
    结果:
    1. 3
    复制代码
    解释: 表中有三个不重复的
    1. department
    复制代码
    值:
    1. Sales
    复制代码
    ,
    1. HR
    复制代码
    ,
    1. IT
    复制代码
    。因此,
    1. COUNT(DISTINCT department)
    复制代码
    返回 3,表示有 3 个不同的部门。
    5.
    1. COUNT()
    复制代码
    1. GROUP BY
    复制代码
    的结合
    1. COUNT()
    复制代码
    函数经常和
    1. GROUP BY
    复制代码
    子句结合使用,用于统计每个分组的数量。
    1. GROUP BY
    复制代码
    按照某列对数据进行分组,
    1. COUNT()
    复制代码
    则对每个分组内的行数进行统计。
    6.
    1. COUNT
    复制代码
    1. HAVING
    复制代码
    的结合
    1. HAVING
    复制代码
    子句通常与
    1. GROUP BY
    复制代码
    一起使用,用来过滤聚合结果。它可以用来限制返回的分组数量,条件可以基于
    1. COUNT()
    复制代码
    等聚合函数的结果。
    7.
    1. COUNT
    复制代码
    1. JOIN
    复制代码
    的结合
    在复杂的查询中,
    1. COUNT()
    复制代码
    函数可以与
    1. JOIN
    复制代码
    子句一起使用,统计与另一个表匹配的记录数量。
    示例:
    1. SELECT d.department, COUNT(e.id)
    2. FROM departments d
    3. LEFT JOIN employees e ON d.id = e.department_id
    4. GROUP BY d.department;
    复制代码
    解释: 此查询会返回每个部门中员工的数量,即使某些部门没有员工,也会返回该部门的记录(因为使用了
    1. LEFT JOIN
    复制代码
    )。使用
    1. COUNT(e.id)
    复制代码
    统计每个部门中关联的员工数量。
    1. COUNT(*)
    复制代码
    1. COUNT(1)
    复制代码
    的区别
    区别

    • 在大多数数据库系统中,
      1. COUNT(*)
      复制代码
      1. COUNT(1)
      复制代码
      的性能几乎相同。
      1. COUNT(*)
      复制代码
      会统计表中所有行,而不关心列内容,而
      1. COUNT(1)
      复制代码
      则是将
      1. 1
      复制代码
      作为一个固定值用于统计。
    • 在某些数据库系统中,
      1. COUNT(1)
      复制代码
      被认为稍微高效一点,因为它不需要解析所有列,只是使用常量
      1. 1
      复制代码
      来计数。
    结论: 现代数据库(如 MySQL)会对
    1. COUNT(*)
    复制代码
    1. COUNT(1)
    复制代码
    做优化处理,因此二者的性能差异几乎可以忽略。选择哪种方式可以根据个人习惯或项目规范。
    总结


      1. COUNT(*)
      复制代码
      :统计表中所有行,包括
      1. NULL
      复制代码
      值。
      1. COUNT(1)
      复制代码
      :与
      1. COUNT(*)
      复制代码
      类似,统计所有行。
      1. COUNT(列名)
      复制代码
      :统计某列中非
      1. NULL
      复制代码
      值的数量。
      1. COUNT(DISTINCT 列名)
      复制代码
      :统计某列中不重复的非
      1. NULL
      复制代码
      值。
      1. COUNT
      复制代码
      可与
      1. GROUP BY
      复制代码
      1. HAVING
      复制代码
      等子句结合,进行复杂的分组统计和条件过滤。
      1. COUNT(*)
      复制代码
      1. COUNT(1)
      复制代码
      在大多数数据库中性能相同,可以按习惯使用。
    到此这篇关于SQL 中 COUNT 的用法示例详解的文章就介绍到这了,更多相关sql count用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/332287hqf.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表