MySQL中count()聚合函数详解!

一、详细用法(5种)

1、COUNT(*)函数返回表中所有行的数量,包括NULL值行。

SELECT COUNT(*) FROM students;

2、COUNT(column_name)函数返回指定列非NULL值的数量,忽略NULL值行。

SELECT COUNT(age) FROM students;

3、COUNT(DISTINCT column_name)返回指定列中不同值的数量,忽略NULL值行。

SELECT COUNT(DISTINCT age) FROM students;

4、COUNT(DISTINCT expr,[expr…])函数返回指定表达式中不同非NULL值的数量,忽略NULL值行。

SELECT COUNT(DISTINCT age, gender) FROM students;

5、COUNT(IF(condition, column_name, NULL))函数返回满足指定条件的指定列的非NULL值数量。

SELECT COUNT(IF(gender='Female', 1, NULL)) FROM students;

在这个 SQL 语句中,IF(gender=‘Female’, 1, NULL) 表示如果学生的性别为 ‘Female’,则返回 1,否则返回 NULL。

在 COUNT 函数中,当函数的参数为一个列名时,它将返回该列中非空值的数量。因此,这个 SQL 语句的含义是统计学生表中性别为 ‘Female’ 的人数。通过 IF 函数,将所有性别为 ‘Female’ 的行转换成 1,然后 COUNT 函数就会返回这些 1 的数量,即性别为 ‘Female’ 的学生数量。

注意,如果使用 COUNT(*),则将返回表中所有行的数量,无论该行的值是否为 NULL。而如果使用 COUNT(column_name),则将只统计指定列中非空值的数量。在上面的 SQL 语句中,由于 IF 函数将性别不为 ‘Female’ 的行转换成 NULL,因此 COUNT 函数只会统计性别为 ‘Female’ 的学生数量。

二、用count(*),count(1),count(列名)谁好呢?

1、
在使用 COUNT(*) 函数时,常用的三种方式是 COUNT(*)、COUNT(1) 和 COUNT(column_name),它们都可以用来统计行数。但是,它们在性能上有所不同,选择合适的方式可以提高查询效率。

COUNT(*)
COUNT(*) 是最常用的方式,它可以统计所有行的数量,包括 NULL 值。在实际应用中,COUNT() 性能相对较高,这是因为数据库在进行查询时,可以直接利用表的元数据来计算行数,而不需要额外的操作。因此,对于需要统计所有行的情况,推荐使用 COUNT(*)

2、
COUNT(1) 的作用和 COUNT() 相同,它也可以统计所有行的数量,包括 NULL 值。和 COUNT() 相比,COUNT(1) 的性能略微差一些,因为在查询时需要把每一行的值都计算一遍。但是,这种差异在实际应用中并不明显,因此 COUNT(1) 也是一个常用的方式。

3、
COUNT(column_name) 只会统计指定列中非 NULL 值的数量,而忽略 NULL 值。因此,如果需要统计指定列的非 NULL 值数量,那么可以使用 COUNT(column_name)。这种方式的性能相对较低,因为需要扫描整个表,对于每一行都要进行判断。

综上所述,COUNT() 和 COUNT(1) 通常比 COUNT(column_name) 更快,因为它们不需要进行值的比较,同时可以利用表的元数据来计算行数。因此,推荐在大多数情况下使用 COUNT() 或 COUNT(1)。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值