T-SQL 汇总之四 COUNT(字段)与COUNT(*)之间的区别
2012-07-25 22:41
344 查看
最后一个介绍的函数就是统计记录数量的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 中的内容: 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值 ,那么俩种查询条件无任何区别。]]
相关文章推荐
- sql中count(*)和count(字段名)区别
- sql中count(*)和count(字段名)区别详解及用途
- sql中count(*)和count(字段名)区别!
- sql语句聚合函数SUM求和+重写重载+sum与count区别
- oracle中关于count(1)、count(*)、count(rowid)、count(某个字段)使用上的区别和性能问题
- sql中同一个表的上下两行之间的某个字段相减有关问题
- asp.net Linq和泛型,IEnumerable和IQueryable之间的区别,Lambda表达式,Linq to Sql停止开发转为 Entity Framework
- SQL一次查出多个字段的COUNT值
- SqlServer表与表之间字段一对多sql语句写法
- SQL中 inner join、 left join 、right join、 outer join之间的区别
- Access数据库字段类型说明以及与SQL之间的对照关系
- sql select * ,select 1, select count(*) ,select count(1)的区别
- SQL——两个表之间的更新:用一个表的字段更新另一个表的字段
- 如何提高sql查询100万条数据count(*)汇总的速度
- JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别 Statement 接口提供了三种执行 SQL 语句的方法:
- SQL SERVERa数据备份与复制(2):直接复制MDF文件和使用SQL的备份之间的区别
- Count(*), Count(1) 和Count(字段)的区别
- SQL语句中SUM与COUNT的区别深入分析
- sql语句,左、右、内连接之间的区别
- SQL中 Inner Join(内连),Left Join(左连),Right Join(右连),Full Join(全外连) 之间的区别 zz