MySQL中count()函数的使用
2015-05-25 21:21
489 查看
基础必备:
在MySQL中,0或 NULL意味着假(0)而其它值意味着真(1)。布尔运算(age = 4 或者 age is null都是布尔运算)的默认真值是1。不能使用算数运算符与null做运算,其结果都是null:
select 1 + null,1 - null, 1 * null, 1 / null, 1 % null, 1 = null, 1 <> null, 1 > null , 1 < null; ---结果都是null
但是 :
可这样理解:1 or null 因为前面1为真,所以没必要往后运算了,结果就是1
0 or null 因为前面0为假,所以要接着往后看才能知道结果,又由于后面是null,任何表达式与null运算都是null
可这样理解:1 and null 因为前面1为真,继续往后看,后面为null, 任何数与null运算都是null
0 and null 因为前面0为假,and运算就没必要往后看了,所以结果是0
count函数有两种形式
1.count(expr):返回SELECT语句检索到的行中非NULL值的数目。
2.count(distinct expr,[expr....]):返回不同的非NULL值的行的数目。
select distinct name,age from t1; --查询t1表中name和t1都不相同的行。前面加上count()就是求一共有多少行name和age不同。
在t1表中有如下数据:
select count(*),count(age),count(age=21),count(age = 21 or null),count(age is null),count(age is not null),count(null)
from t1;
查询结果是:7,6,7,3,7,7,0
分析:
count(*):很明显是结果集的行数
count(age):age不为空的行数
count(age=21):第一行和第二行age都是21,所以表达式age=21的值为1;而第四行age为22,所以age=21的布尔值为0,但是不管age=21的结果是0还是1,这两种结果都不是null,所以答案是7.
count(age=21 or null):第一行和第二行age都是21,所以表达式age=21 or null的值为1;而第四行age为22,所以表达式age=21 or null的值为null,那么这一行在count计算的时候就不会被包括在内了。
count(age is null):age is null的结果0或者1(select age is null ;)这两种结果都不是null值,所以答案还是7
count(age is not null):同上
count(null):因为count统计的是expr不为null的行数,很明显答案是0
在MySQL中,0或 NULL意味着假(0)而其它值意味着真(1)。布尔运算(age = 4 或者 age is null都是布尔运算)的默认真值是1。不能使用算数运算符与null做运算,其结果都是null:
select 1 + null,1 - null, 1 * null, 1 / null, 1 % null, 1 = null, 1 <> null, 1 > null , 1 < null; ---结果都是null
但是 :
可这样理解:1 or null 因为前面1为真,所以没必要往后运算了,结果就是1
0 or null 因为前面0为假,所以要接着往后看才能知道结果,又由于后面是null,任何表达式与null运算都是null
可这样理解:1 and null 因为前面1为真,继续往后看,后面为null, 任何数与null运算都是null
0 and null 因为前面0为假,and运算就没必要往后看了,所以结果是0
count函数有两种形式
1.count(expr):返回SELECT语句检索到的行中非NULL值的数目。
2.count(distinct expr,[expr....]):返回不同的非NULL值的行的数目。
select distinct name,age from t1; --查询t1表中name和t1都不相同的行。前面加上count()就是求一共有多少行name和age不同。
在t1表中有如下数据:
select count(*),count(age),count(age=21),count(age = 21 or null),count(age is null),count(age is not null),count(null)
from t1;
查询结果是:7,6,7,3,7,7,0
分析:
count(*):很明显是结果集的行数
count(age):age不为空的行数
count(age=21):第一行和第二行age都是21,所以表达式age=21的值为1;而第四行age为22,所以age=21的布尔值为0,但是不管age=21的结果是0还是1,这两种结果都不是null,所以答案是7.
count(age=21 or null):第一行和第二行age都是21,所以表达式age=21 or null的值为1;而第四行age为22,所以表达式age=21 or null的值为null,那么这一行在count计算的时候就不会被包括在内了。
count(age is null):age is null的结果0或者1(select age is null ;)这两种结果都不是null值,所以答案还是7
count(age is not null):同上
count(null):因为count统计的是expr不为null的行数,很明显答案是0
相关文章推荐
- PowerBuilder中使用JDBC连接MYSQL 无法使用COUNT(*) MAX() 函数的处理
- mysql中MAX()函数和count()函数的技巧使用
- Mysql count+if 函数结合使用
- MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录
- COUNT()函数使用时数据溢出-->COUNT_BIG
- 关于如何在vertica上使用MySQL的group_concat()函数
- MySQL中的UNIX_TIMESTAMP函数使用总结
- PHP下MySQL的基本使用函数
- MySQL中使用group_concat()函数数据字符过长报错的问题解决方法
- Entity framework 中Where、First、Count等查询函数使用时要注意
- mysql中find_in_set()函数的使用
- mysql中的函数concat、concat_ws、group_concat使用
- mysql常用函数使用(1)
- mysql 的 find_in_set 函数使用方法
- 关于MySql中使用自定义函数的学习心得
- mysql_触发器、函数、if的使用
- mysql中if()函数使用
- MySQL中MIN()函数的使用教程
- spark-sql使用UDF函数实现ip映射省份,数据写出到mysql参数设置。
- mysql高性能中使用的常用的函数