自学内容网 自学内容网

Mysql COUNT() 函数详解

在使用Mysql的时候,作为开发者,聚合函数是肯定会用到的,下面就来说说我们常用到的统计行数的聚合函数 COUNT()。

COUNT() 的几种用法

说到COUNT() 函数,最常用的几种方法就是 COUNT(*) 、COUNT(1)、 COUNT(column),那么关于这几种 COUNT() 函数的不同之处这里就来详细说说,这里提前准备一个表并填充部分数据,比如

SELECT * FROM sys_post;

在这里插入图片描述

COUNT(*)

统计表中满足条件的所有的数据行数,包括 NULL 和重复项,比如

SELECT COUNT(*) FROM sys_post;

在这里插入图片描述

COUNT(1)

COUNT(1) 和 COUNT(*) 差不多,统计表中满足条件的所有数据行数,包括 NULL和重复项,比如

SELECT COUNT(1) FROM sys_post;

在这里插入图片描述

COUNT(column)

COUNT(column) 统计列名会统计满足条件的所有数据行数,不包括指定列名为 NULL的数据,比如

SELECT COUNT(create_by) FROM sys_post;

在这里插入图片描述

COUNT(*) 与 GROUP BY

这里统计不同 create_by 的数据行数,比如

SELECT create_by,COUNT(*) FROM sys_post GROUP BY create_by;

在这里插入图片描述

COUNT(*) 与 GROUP BY 和 HAVING

这类统计不同create_by 的数据行数,并筛选出 COUNT(*) > 1 的数据,比如

SELECT create_by,COUNT(*) FROM sys_post GROUP BY create_by HAVING COUNT(*)>1;

在这里插入图片描述

COUNT(expr) 的用法

COUNT(expr) 表示COUNT 统计带条件的指定列的数据

COUNT(DISTINCT expr)

统计指定字段去重后的数据行数,这里不会统计该字段为 NULL 的数据,同时对于该字段相同数值只统计一次,比如

SELECT COUNT(DISTINCT post_sort) FROM sys_post;

在这里插入图片描述

由于原始数据中有两个 post_port = 1 的数据,因此去重统计时会只统计一次。另外就是 COUNT(DISTINCT post_sort) 不会统计该列值为 NULL 的数据,比如这里去重统计 create_by

SELECT COUNT(DISTINCT create_by) FROM sys_post;

在这里插入图片描述

这是因为表中数据 create_by 只有 admin 和 NULL 两种数据,不统计 NULL 数据,去重后就只剩下数字 1 了。

COUNT(expr) 带条件查询

这里有一个场景,就是需要统计 create_by 不是 admin ,那么就需要用到 COUNT(expr) 中的条件了,首先给表 sys_post 增加两条数据,增加数据后如下
在这里插入图片描述

统计 create_by 不是 admin 的数据行数,如下

SELECT COUNT(if(create_by != 'admin',1,null)) FROM sys_post;

在这里插入图片描述

这里实际就是 COUNT(create_by) ,那么指定列字段的统计,不会计算 NULL 的数据,根据条件 create_by != ‘admin’ 计算得出就是只有 create_by 是 cc 、dd的两条数据了。
上面的查询语句也可以这样更改

SELECT COUNT(CASE WHEN create_by != 'admin' THEN 1 END) FROM sys_post;

查询结果是一样的效果
在这里插入图片描述

写在最后

以上就是Mysql 统计数据时常用到的 COUNT() 函数的几种场景,大家有需要的可以参考。


原文地址:https://blog.csdn.net/csdn565973850/article/details/143663601

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!