MySQL COUNT()函数
简介:在本教程中,您将学习如何使用MySQL COUNT()函数返回表中的行数。
MySQL COUNT()函数简介
COUNT()函数是一个聚合函数,它返回表中的行数。
COUNT()函数允许您计数所有行或仅对符合指定条件的行进行计数。
COUNT()函数具有三种形式:COUNT(*),COUNT(表达式)和COUNT(DISTINCT表达式)。
COUNT(*)函数
COUNT()函数返回SELECT语句返回的结果集中的行数。
COUNT()返回行数,包括重复行,非NULL和NULL行。
COUNT(表达式)
COUNT(表达式)返回不包含NULL值的行数作为表达式的结果。
COUNT(DISTINCT表达式)
COUNT(DISTINCT表达式)作为表达式的结果返回不包含NULL值的不同行的数量。
COUNT()函数的返回类型为BIGINT。
如果找不到匹配的行,则COUNT()函数将返回0。
MySQL COUNT()函数图
设置样本表
首先,创建一个名为count_demos的表:
CREATE TABLE count_demos ( id INT AUTO_INCREMENT PRIMARY KEY, val INT );
其次,将一些行插入count_demos表中:
INSERT INTO count_demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);
第三,从count_demos表中查询数据:
SELECT * FROM count_demos;
MySQL COUNT(*)示例
以下语句使用COUNT(*)函数返回count_demos表中的所有行:
SELECT COUNT(*) FROM count_demos;
本示例将COUNT(*)函数与WHERE子句一起使用以指定条件以仅对val列中值为2的行进行计数:
SELECT COUNT(*) FROM count_demos WHERE val = 2;
MySQL COUNT(表达式)示例
如果您在COUNT()函数中指定val列,则COUNT()函数将仅对val列中具有非NULL值的行进行计数:
SELECT COUNT(val) FROM count_demos;
请注意,结果中不包含两个NULL值。
MySQL COUNT(DISTINCT表达式)示例
本示例使用COUNT(DISTINCT表达式)对val列中的非NULL和不同值进行计数:
SELECT COUNT(DISTINCT val) FROM count_demos;
MySQL COUNT()函数实用示例
下面的示例将使用示例数据库中的产品表:
A)使用MySQL COUNT(*)函数和GROUP BY示例
COUNT(*)函数通常与GROUP BY子句一起使用,以返回每个组中的元素数。
例如,此语句将COUNT()函数与GROUP BY子句一起使用,以返回每个产品系列中的产品数:
SELECT productLine, COUNT(*) FROM products GROUP BY productLine;
同样,此示例使用COUNT(*)函数查找每个供应商提供的产品数量:
SELECT productVendor, COUNT(*) FROM products GROUP BY productVendor ORDER BY COUNT(*) DESC;
B)将MySQL COUNT(*)与HAVING子句示例一起使用
要查找至少提供9种产品的供应商,请在HAVING子句中使用COUNT(*)函数,如以下查询所示:
SELECT productVendor, COUNT(*) FROM products GROUP BY productVendor HAVING COUNT(*) >= 9 ORDER BY COUNT(*) DESC;
C)MySQL COUNT IF示例
您可以在COUNT()函数中使用控制流表达式和函数,例如IF,IFNULL和CASE来对值与条件匹配的行进行计数。
请参阅示例数据库中的以下订单表:
以下查询将COUNT()与IF函数一起使用,以从订单表中查找已取消,保留和有争议的订单的数量:
SELECT COUNT(IF(status = 'Cancelled', 1, NULL)) 'Cancelled', COUNT(IF(status = 'On Hold', 1, NULL)) 'On Hold', COUNT(IF(status = 'Disputed', 1, NULL)) 'Disputed' FROM orders;
如果订单的状态被取消,保留或有争议,则IF()函数将返回1,否则返回NULL。
COUNT函数仅计算1,而不是NULL值,因此,查询根据相应的状态返回订单数。
在本教程中,您学习了使用MySQL COUNT函数计算表中行数的各种技术。