COUNT()和COUNT(字段)区别

2014-11-24 08:38:30 ? 作者: ? 浏览: 2
COUNT()和COUNT(字段)区别
最后一个介绍的函数就是统计记录数量的COUNT,这个函数有一点特别,因为它的即可以
像其他聚合函数一样使用字段名做参数,也可以使用星号“*”做为参数。我们执行下面的SQL:
SELECT COUNT(*),COUNT(FNumber) FROM T_Employee
执行完毕我们就能在输出结果中看到下面的执行结果:
8 8
可以看到COUNT(*)、COUNT(FNumber)两种方式都能统计出记录的条数,据此为数不少
的开发人员都认为COUNT(*)、COUNT(字段名)这两种使用方式是等价的。下面通过例子来说
明,为了看到两种使用方式的区别需要首先向表T_Employee 中插入一条新的数据,执行下面
的SQL:
INSERT INTO T_Employee(FNumber,FAge,FSalary) VALUES('IT002',27,2800)
需要注意的就是这句INSERT语句没有为FName 字段赋值,也就是说新插入的这条数据的
FName 字段值为空,可以执行SELECT * FROM T_Employee 来查看表T_Employee 中的
内容: www.2cto.com
FNumber FName FAge FSalary
DEV001 Tom 25 8300.00
DEV002 Jerry 28 2300.80
HR001 Jane 23 2200.88
HR002 Tina 25 5200.36
IT001 Smith 28 3900.00
IT002 27 2800.00
SALES001 John 23 5000.00
SALES002 Kerry 28 6200.00
SALES003 Stone 22 1200.00
可以看到FNumber 为IT002 的行的FName字段是空值。接着执行下面的SQL:
SELECT COUNT(*),COUNT(FNumber),COUNT(FName) FROM T_Employee
执行完毕我们就能在输出结果中看到下面的执行结果:
9 9 8
可以看到COUNT(*)、COUNT(FNumber)两个表达式的计算结果都是9,而COUNT(FName)
的计算结果是8。也就反应出了两种使用方式的区别:COUNT(*)统计的是结果集的总条数,而
COUNT(FName)统计的则是除了结果集中FName 不为空值(也就是不等于NULL)的记录的总
条数。由于FNumber 为IT002 的行的FName 字段是空值,所以COUNT(FName)的计算结果
是8。因此在使用聚合函数COUNT 的时候一定要区分两种使用方式的区别,以防止出现数据错
误。
提示:如果查询出来的条件没有NULL值 ,那么俩种查询条件无任何区别。
作者 Jession.
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: