DevMind Asked: 2020-02-04 06:53:48 +0800 CST 2020-02-04 06:53:48 +0800 CST 2020-02-04 06:53:48 +0800 CST count(*) 和 count(column-name) 的区别 772 在练习 SQL 查询时,出现了一个关于如何执行 SQL 查询的问题。我想知道有什么区别: SELECT open_date, COUNT(*) FROM accounts 与这个其他 从帐户中选择 COUNT(open_date) mysql 1 Answers Voted Best Answer A. Cedano 2020-02-04T07:12:00+08:002020-02-04T07:12:00+08:00 不同之处在于: ►第一次咨询: SELECT open_date, COUNT(*) FROM accounts 它将返回包含两列的单行,第一列将具有从字段open_date中找到的第一个值,第二列将告诉您表中的记录总数。 正如您所理解的,要求增加一个SELECT类似的列没有多大意义。 但是,当您想知道该列中有多少元素时,它可以COUNT与附加列(或多个)一起使用,方法是将它与GROUP BY. 例如,如果您想知道每个物种有多少动物: SELECT species, COUNT(*) FROM pet GROUP BY species; +---------+----------+ | species | COUNT(*) | +---------+----------+ | bird | 2 | | cat | 2 | | dog | 3 | | hamster | 1 | | snake | 1 | 使用该过程,您可以获得各种类型的列的计数(有关其他示例,请参见此答案底部链接中的代码示例)。 ►第二个查询:SELECT COUNT(open_date) FROM accounts 它会告诉你表中的记录总数,但如果有的话,会忽略列值NULLopen_date。换句话说,在这种情况下,它可能不会计算表中的所有行。 ►简而言之: COUNT(*): 将计算表中的所有记录。它也可以使用COUNT(1)。但是,通常使用的形式是带有*. COUNT(columna): 将计算表中所有值columna不是的记录NULL。如果您想知道表中有多少条记录,而不管空值如何,这种用法是不安全的。 有关更多详细信息和示例,您可以查看MySQL 文档。
不同之处在于:
►第一次咨询:
SELECT open_date, COUNT(*) FROM accounts
它将返回包含两列的单行,第一列将具有从字段
open_date
中找到的第一个值,第二列将告诉您表中的记录总数。正如您所理解的,要求增加一个
SELECT
类似的列没有多大意义。但是,当您想知道该列中有多少元素时,它可以
COUNT
与附加列(或多个)一起使用,方法是将它与GROUP BY
.例如,如果您想知道每个物种有多少动物:
使用该过程,您可以获得各种类型的列的计数(有关其他示例,请参见此答案底部链接中的代码示例)。
►第二个查询:
SELECT COUNT(open_date) FROM accounts
它会告诉你表中的记录总数,但如果有的话,会忽略列值
NULL
open_date
。换句话说,在这种情况下,它可能不会计算表中的所有行。►简而言之:
COUNT(*)
: 将计算表中的所有记录。它也可以使用COUNT(1)
。但是,通常使用的形式是带有*
.COUNT(columna)
: 将计算表中所有值columna
不是的记录NULL
。如果您想知道表中有多少条记录,而不管空值如何,这种用法是不安全的。有关更多详细信息和示例,您可以查看MySQL 文档。