什么是;expr";在MySQL中运行';s计数(expr)函数?

什么是;expr";在MySQL中运行';s计数(expr)函数?,mysql,sql,database,count,Mysql,Sql,Database,Count,考虑如下: SELECT COUNT(*) FROM table; SELECT COUNT(1) FROM table; SELECT COUNT(-2) FROM table; SELECT COUNT(135392) FROM table; SELECT COUNT(field) FROM table; SELECT COUNT(field1 + field2) FROM table; 我不清楚expr实际上做了什么,或者它可以用于什么,因为上面所有的SQL语句都返回相同的结果。示例如下

考虑如下:

SELECT COUNT(*) FROM table;
SELECT COUNT(1) FROM table;
SELECT COUNT(-2) FROM table;
SELECT COUNT(135392) FROM table;
SELECT COUNT(field) FROM table;
SELECT COUNT(field1 + field2) FROM table;
我不清楚
expr
实际上做了什么,或者它可以用于什么,因为上面所有的SQL语句都返回相同的结果。示例如下:

+-----------+
| count(..) |
+-----------+
|     54542 |
+-----------+
MySQL的手册()没有详细介绍
expr
部分,除了使用
*
符号
COUNT()
统计
计算为非空值的行数

通常,表达式不需要它,只在单个可
NULL
的列上使用它,或者在由于外部联接而可能为
NULL
的列上使用它。

COUNT()
统计
计算为非
NULL
值的行数

通常,表达式不需要它,只在单个可
NULL
-able列上使用,或者在由于外部联接而可能为
NULL
的列上使用。

  • COUNT(*)
    将对所有行进行计数
  • COUNT(expr)
    如果
    expr
    非空
因此,如果
expr
包含空值,则
COUNT(expr)
可能小于
COUNT(*)

SELECT COUNT(*), COUNT(1), COUNT(col)
FROM (
    SELECT 'a' UNION ALL
    SELECT 'b' UNION ALL
    SELECT NULL
) AS t(col)

-- 3    3    2
  • COUNT(*)
    将对所有行进行计数
  • COUNT(expr)
    如果
    expr
    非空
因此,如果
expr
包含空值,则
COUNT(expr)
可能小于
COUNT(*)

SELECT COUNT(*), COUNT(1), COUNT(col)
FROM (
    SELECT 'a' UNION ALL
    SELECT 'b' UNION ALL
    SELECT NULL
) AS t(col)

-- 3    3    2

Expr是expression的缩写,其本身是“某个有效的sql块的缩写,该sql块在计算时为此行生成一个值”

它可以是常量、列、函数调用的结果、变量赋值、case语句等

—equivalent
COUNT(*)
COUNT(1)
COUNT(‘a’)

—count only males. If the group is 1000 in number and 600 are female, this returns 400
COUNT(case when gender = ‘m’ then ‘a’ else null end)
作为对其他答案的补充,
可以选择以单词DISTINCT开头,在这种情况下,只计算引用实体/表达式/函数结果的唯一出现次数

—in a set of 1000 animals, returns 1000
COUNT(gender)

—in a set of 1000 animals, 600 female, returns 2 (only values M and F exist in the group)
COUNT(distinct gender)

Expr是expression的缩写,其本身是“某个有效的sql块的缩写,该sql块在计算时为此行生成一个值”

它可以是常量、列、函数调用的结果、变量赋值、case语句等

—equivalent
COUNT(*)
COUNT(1)
COUNT(‘a’)

—count only males. If the group is 1000 in number and 600 are female, this returns 400
COUNT(case when gender = ‘m’ then ‘a’ else null end)
作为对其他答案的补充,
可以选择以单词DISTINCT开头,在这种情况下,只计算引用实体/表达式/函数结果的唯一出现次数

—in a set of 1000 animals, returns 1000
COUNT(gender)

—in a set of 1000 animals, 600 female, returns 2 (only values M and F exist in the group)
COUNT(distinct gender)

您提到的文档链接不完整。这将是一个完整的链接(也在源链接中引用):您提到的文档链接不完整。这将是一个完整的(也在您的源链接中引用):