COUNT()和COUNT(字段)区别

来源:未知 责任编辑:责任编辑 发表时间:2014-05-26 11:01 点击:
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 <NULL> 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.
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • sql常见面试题
    • SQL SERVER 2005性能之跟踪
    • SQL编程(一)
    • LINUX上RMAN自动备份脚本
    • sql server面试题
    • 如何将多个SQL查询统计结果一次显示出来
    • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
    • sql server 列转行
    • SQL小技巧系列 --- 行转列合并
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1