考虑如下:
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手册(https://dev.mysql.com/doc/refman/8.0/en/counting-rows.html)没有详细说明 expr
部分,而不是使用 *
符号
3条答案
按热度按时间nr7wwzry1#
expr是expression的缩写,它本身是“某个有效的sql块的缩写,该sql块在求值时为此行生成一个值”
它可以是常量、列、函数调用的结果、变量赋值、case语句等
作为对其他答案的补充
<expr>
可以选择以单词distinct开头,在这种情况下,只计算引用实体/表达式/函数结果的唯一出现次数omhiaaxx2#
COUNT(<expr>)
计算其中的行数<expr>
计算为非-NULL
价值观。一般来说,它不需要与表达式一起使用,只用于单个,
NULL
-可以是列--或者可以是NULL
由于外部连接。zbdgwd5y3#
COUNT(*)
将计算所有行COUNT(expr)
如果expr
是NOT NULL
所以呢COUNT(expr)
可能小于COUNT(*)
如果expr
包含空值: