count(1)、count(_)与count(列名)的区别?

立山  金牌会员 | 2024-12-24 09:00:34 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

大家好,我是锋哥。本日禀享关于【count(1)、count(_)与count(列名)的区别?】面试题。盼望对大家有资助;

count(1)、count(_)与count(列名)的区别?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网
在 SQL 中,COUNT() 是一个用于统计行数的聚合函数。COUNT(1)、COUNT(*) 和 COUNT(列名) 是三种常见的用法,它们在不怜悯况下的表现有所差别。下面我会详细解释这三者的区别。
1. COUNT(1)



  • 功能:统计查询效果中的行数。无论该行中任何列的值是否为 NULL,都会被计数。
  • 如何工作:COUNT(1) 会将每一行都计数一次。这里的 1 表示对每一行都返回一个常量值 1,因此不关心该行详细列的内容。它计数的是所有行的总数。
  • 与其他情势的区别:COUNT(1) 和 COUNT(*) 效果通常是一样的,由于它们都统计了所有的行数。
示例:

  1. SELECT COUNT(1) FROM employees;
复制代码
这会返回 employees 表中所有行的数量。
2. COUNT(*)



  • 功能:统计查询效果中的行数,不会忽略任何行,纵然某些列的值为 NULL,也会被计数。
  • 如何工作:COUNT(*) 计算的是表中行的总数,它不关心列的内容。纵然某一列的值为 NULL,该行也会被计数在内。
  • 与其他情势的区别:COUNT(*) 是统计表中行数的标准方法,通常与 COUNT(1) 产生相同的效果。
示例:

  1. SELECT COUNT(*) FROM employees;
复制代码
这也会返回 employees 表中的所有行的数量。
3. COUNT(列名)



  • 功能:统计某一列中非 NULL 值的行数。COUNT(列名) 只会对该列中不为 NULL 的行举行计数。
  • 如何工作:COUNT(列名) 不管帐数该列值为 NULL 的行。假如列中有 NULL 值,这些行会被排除在计数之外。
示例:

  1. SELECT COUNT(salary) FROM employees;
复制代码
这会返回 employees 表中 salary 列中非 NULL 值的数量。假如某些行的 salary 列值为 NULL,这些行不会被计数。
总结比力:

函数计数的内容忽略 NULL 值留意事项COUNT(*)统计所有行(不管列的值是否 NULL)否适用于统计所有行数COUNT(1)统计所有行(不管列的值是否 NULL)否通常与 COUNT(*) 功能相同COUNT(列名)统计该列非 NULL 值的行数是只计数该列中非 NULL 的行 常见误区:



  • COUNT(*) 和 COUNT(1) 在大多数情况下是等效的。它们都统计了查询效果的行数。
  • COUNT(列名) 会忽略 NULL 值,假如列中有许多 NULL,大概会返回较少的效果。
总的来说,选择哪种写法取决于你想要统计的内容:


  • 假如你想要统计所有行数,包括所有的 NULL 和非 NULL 列,使用 COUNT(*) 或 COUNT(1)。
  • 假如你只关心某列中非 NULL 的行,使用 COUNT(列名)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表