![]() |
1
46
是的,因为它是一个聚合并返回零。 除非你添加组,在这种情况下没有结果,因为没有组… max/sum etc将返回空值,除非在没有行之前添加group。 只有count返回一个没有结果的数字 编辑,稍晚:sum将像max一样返回null 2013年5月编辑:这适用于所有主要RDBMS。我想是按照美国国家标准协会的标准 |
![]() |
2
8
是的, “count”函数本身的返回值 总是一个非空整数,没有例外。 话虽如此,你可能更感兴趣的回报价值 查询 ,实际上是 结果集 . 如果是这样,那么您只需考虑查询是否包含“group by”子句。 一 非分组查询 聚合函数如下
生成包含单个记录的结果集 包含聚合函数的返回值。在这种情况下,结果集将始终只有一条记录,其中的列包含所包含的任何聚合函数的返回值。在这个单独的记录中,count的返回值将始终是非空整数,而其他聚合函数(如min、max和sum)的返回值可能为空。在上面的例子中,您返回的记录可能是“0,null,null,null”,但是永远不会是“null,null,null,null”,因为count永远不会返回null。因此,如果只调用“count”,那么返回的记录中的一列将始终包含count的非空返回值;因此,您可以放心,count查询的标量返回值将始终是非空整数。 另一方面,一个 分组查询 聚合函数如下
生成包含零个或多个记录的结果集 哪里 每条记录 包含所标识的每个组的聚合函数的返回值。在这种情况下,如果没有标识组,则聚合函数没有可运行的组,函数永远不会运行,“查询返回值”将是一个完全没有记录的空集。 在一张没有记录的桌子上测试,看看结果:
因此,无论您是调用count、min、max还是sum,不仅要了解单个聚合函数的返回值,还要了解查询本身的“返回值”,以及结果集包含的内容。 |
![]() |
3
5
聚合函数count()始终返回值 |
![]() |
4
2
是的,它将始终返回一个数字 |
![]() |
5
2
是的,在这种情况下会返回0。 |
![]() |
6
2
总会有这样一行结果:
如果没有匹配项。
顺便说一下,我宁愿只计算主键而不是
|
![]() |
7
2
如果没有匹配的记录,则计数将返回0。 (所以是的,count总是返回一个结果,除非您有语法错误) |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |