COUNT()函数详解
来源:互联网 发布:分层网络模型优点 编辑:程序博客网 时间:2024/06/14 20:57
COUNT 顾名思义,就是计数的意思,此函数用处:对表中记录数进行计数。
MySQL COUNT()函数介绍
COUNT()
函数返回表中的行数。 COUNT()
函数允许您对表中符合特定条件的所有行进行计数。
COUNT()
函数的语法如下 -
COUNT(expression)
COUNT()
函数的返回类型为BIGINT
。 如果没有找到匹配的行,则COUNT()
函数返回0
。
COUNT
函数有几种形式:COUNT(*)
,COUNT(1),COUNT(column), COUNT(DISTINCT column)和COUNT(expression)。
COUNT(*)函数
COUNT(*)
函数返回由SELECT语句返回的结果集中的行数。COUNT(*)
函数计算包含NULL
和非NULL
值的行,即:所有行。
如果使用COUNT(*)
函数对表中的数字行进行计数,而不使用WHERE子句选择其他列,则其执行速度非常快。
这种优化仅适用于MyISAM表,因为MyISAM表的行数存储在information_schema
数据库的tables
表的table_rows
列中; 因此,MySQL可以很快地检索它。
COUNT(1)函数
count(1)这个用法和count(*)的结果是一样的。
COUNT(DISTINCT COLUMN)
MySQL COUNT(DISTINCT column)
返回不包含NULL
值的唯一行数。
COUNT(COLUMN)
MySQL COUNT(column)
返回不包含NULL
值的所有行数。
COUNT(expression)
COUNT(expression)
返回不包含NULL
值的行数,expression 是表达式。
下面来看一下例子:
原表数据:
1、count(*)
SELECT COUNT(*) count FROM t_iov_help_feedback
结果:
可以看到,只要表中存在记录,不管是否有字段为NULL,都会被count出来,查询出来数量为4(全部)。
2、count(1)
SELECT COUNT(1) count FROM t_iov_help_feedback
结果:
可以看到,count(1)这个用法和count(*)的结果是一样的,查询出来数量为4(全部)。
如果表没有主键,那么count(1)比count(*)快;
如果有主键,那么count(主键,联合主键)比count(*)快;
如果表只有一个字段,count(*)最快。
count(1)跟count(主键)一样,只扫描主键。count(*)跟count(非主键)一样,扫描整个表。明显前者更快一些。
性能问题:
1.任何情况下SELECT COUNT(*) FROM tablename是最优选择,(指没有where的情况);
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现。
3、count(column)
SELECT COUNT(UPLOAD_PICTURES) count FROM t_iov_help_feedback;结果:
可以看到,将UPLOAD_PICTURES 字段为 NULL 的记录不计算在内,有1条记录为NULL,所以查询出来数量为3。
4、count(DISTINCT column)
SELECT COUNT(DISTINCT UPLOAD_PICTURES) count FROM t_iov_help_feedback;结果:
可以看到,将UPLOAD_PICTURES 字段为 NULL 的记录不计算在内,以及重复的记录只算1条。
有条记录为NULL,有两条记录UPLOAD_PICTURES 字段值重复(都为“s”),所以查询出来数量为2。
5、count(expression)
expression表示一个表达式,意思是在count中我们可以得到符合特点条件的记录数。
例子1,查询 is_reply=0 的数量:
SELECT COUNT(IF(is_reply=0,1,NULL)) count FROM t_iov_help_feedback;
结果:
可以看到,is_reply=0 的记录是3条,所以查询出来数量为3。
例子2,查询 is_reply=1 的数量:
SELECT COUNT(IF(is_reply=1,1,NULL)) count FROM t_iov_help_feedback;
结果:
可以看到,is_reply=1 的记录是1条,所以查询出来数量为1。
COUNT(IF(is_reply=1,1,NULL)) 语句解析:
IF(表达式1,表达式2,表达式3),
IF() 函数就是一个简单的判断器,它会判断第一个参数是否成立,如果成立,IF函数将返回表达式2,否则返回表达式3。
这里意思是:如果is_reply=1,IF函数将返回1
,否则返回NULL
。 COUNT
函数只计数1
,而不是NULL
值,因此查询根据相应的状态返回记录数。
OK,That's all.
- COUNT()函数详解
- MySQL中count函数使用方法详解
- mysql中count函数使用方法详解
- mysql中count函数使用方法详解
- mysql中count函数使用方法详解
- mysql 聚集函数 count 使用详解
- mysql 聚集函数 count 使用详解
- count()函数
- count 函数
- Count 函数
- count()函数。
- count (函数)
- count()函数
- count与count_if详解
- count(*)函数的使用
- count函数的使用
- Oracle中count()函数
- sql count函数统计
- Js关于原型以及原型链的详细介绍
- JAVA环境+eclipse+tomcat+maven配置
- python第一感受
- 字符串转整数 C++编程
- applicationContext-dao.xml
- COUNT()函数详解
- 数据结构--初识图
- HBase体系结构剖析--下
- 卡尔曼滤波
- 过滤器通过HttpServletResponseWrapper包装HttpServletResponse实现获取response中的返回数据,以及对数据进行gzip压缩
- Android Studio查找快捷键总结
- C++之获取GPU(显卡)信息
- Kotlin基础学习
- 打造全国产存储系统到底有多难?