通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

执行count(1)、count(*) 与 count(列名) 到底有什么区别

执行count(1)、count(*) 与 count(列名) 的区别:一、语义不同;二、性能差异;三、对空值的处理不同;四、使用范围不同;五、结果集不同;六、可读性不同。语义不同是指,count(1)表示统计查询结果的行数,count(*)表示统计查询结果的行数,count(列名)表示统计指定列的非空值的数量。

一、语义不同

  • count(1):表示统计查询结果的行数,不考虑表中的任何列的值,只关心是否存在行。
  • count(*):表示统计查询结果的行数,与count(1)类似,不考虑表中的任何列的值,只关心是否存在行。
  • count(列名):表示统计指定列的非空值的数量,只统计指定列中不为NULL的行。

二、性能差异

  • count(1)和count(*):这两种写法在大多数数据库系统中的性能是相同的,因为它们都不关心具体的列值,只关心行的存在与否。
  • count(列名):这种写法在某些数据库系统中可能会比count(1)和count(*)性能稍差,因为它需要检查指定列的值是否为NULL,并排除NULL值的行。

三、对空值的处理不同

  • count(1)和count(*):不关心表中的具体列值,因此不受空值影响,会将包含NULL值的行也计算在内。
  • count(列名):只统计指定列的非空值,会排除包含NULL值的行,只计算指定列中不为NULL的行

四、使用范围不同

  • count(1)和count(*):适用于查询整个表或满足特定条件的行数。
  • count(列名):适用于统计特定列的非空值数量。

五、结果集不同

  • count(1)和count(*):返回的结果集只有一行一列,即表示查询结果的行数。
  • count(列名):返回的结果集只有一行一列,即表示指定列的非空值数量。

六、可读性不同

  • count(1):语义上不够明确,不容易理解其作用。
  • count(*):语义明确,表示统计行数。
  • count(列名):语义明确,表示统计指定列的非空值数量。

延伸阅读

COUNT(*)是什么

COUNT(*) 是一种数据库查询语句,用于统计某个表中的记录数或满足指定条件的记录数。它返回一个表示记录数量的整数值。使用 COUNT() 时,数据库引擎会对指定的表进行扫描,并计算符合条件的记录数量。 表示选择所有的列,而不是特定的列名。因此,COUNT(*) 将统计整个表中的记录数,无论具体的列值是什么。

相关文章