• 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 中的
    内容:
    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值 ,那么俩种查询条件无任何区别。

  • 相关阅读:
    最新的Delphi版本号对照
    SuperObject生成示例
    Why does Delphi XE7 IDE hangs and fails on out of memory exception?
    使用 TRESTClient 与 TRESTRequest 作为 HTTP Client(转)
    Delphi提取PDF文本
    (3)PyCharm中Flask工程逆向生成数据库表
    (2)PyCharm开发Flash项目之蓝图构建
    (1)PyCharm开发工具安装Flask并创建helloworld程序
    使用localStorage写一个简单的备忘录
    一个Redis实例适合存储不同应用程序的数据吗?
  • 原文地址:https://www.cnblogs.com/360aq/p/2514418.html
Copyright © 2020-2023  润新知