MySQL COUNT()函数的用法
MySQL 中的 COUNT() 函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。
COUNT()函数的使用方法有两种:
【实例】查询 customers 表中总的行数,SQL 语句如下:
【实例】查询 customers 表中有电子邮箱的顾客的总数,SQL 语句如下:
提示:两个例子中不同的数值说明了两种方式在计算总数的时候对待 NULL 值的方式不同:指定列的值为空的行被 COUNT() 函数忽略;如果不指定列,而在 COUNT() 函数中使用星号“*”,则所有记录都不忽略。
前面介绍分组查询的时候,介绍了如何使用 COUNT() 函数与 GROUP BY 关键字一起来计算不同分组中的记录总数。
【实例】在 orderitems 表中,使用 COUNT() 函数统计不同订单号中订购的水果种类,SQL 语句如下:
COUNT()函数的使用方法有两种:
-
COUNT(*)
:计算表中总的行数,不管某列是否有数值或者为空值。 -
COUNT(字段名)
:计算指定列下总的行数,计算时将忽略空值的行。
【实例】查询 customers 表中总的行数,SQL 语句如下:
mysql> SELECT COUNT(*) AS cust_num FROM customers; +----------+ | cust_num | +----------+ | 4 | +----------+由查询结果可以看到,COUNT(*) 返回 customers 表中记录的总行数,不管其值是什么,返回的总数的名称都为 cust_num。
【实例】查询 customers 表中有电子邮箱的顾客的总数,SQL 语句如下:
mysql> SELECT COUNT(c_email) AS email_num FROM customers; +-----------+ | email_num | +-----------+ | 3 | +-----------+由查询结果可以看到,表中 5 个 customer 只有 3 个有 email,customer 的 email 为空值 NULL 的记录没有被 COUNT() 函数计算。
提示:两个例子中不同的数值说明了两种方式在计算总数的时候对待 NULL 值的方式不同:指定列的值为空的行被 COUNT() 函数忽略;如果不指定列,而在 COUNT() 函数中使用星号“*”,则所有记录都不忽略。
前面介绍分组查询的时候,介绍了如何使用 COUNT() 函数与 GROUP BY 关键字一起来计算不同分组中的记录总数。
【实例】在 orderitems 表中,使用 COUNT() 函数统计不同订单号中订购的水果种类,SQL 语句如下:
mysql> SELECT o_num, COUNT(f_id) FROM orderitems GROUP BY o_num; +-------+-------------+ | o_num | COUNT(f_id) | +-------+-------------+ | 30001 | 4 | | 30002 | 1 | | 30003 | 1 | | 30004 | 1 | | 30005 | 4 | +-------+-------------+从查询结果可以看到,GROUP BY 关键字先按照订单号进行分组,然后计算每个分组中的总记录数。