昨天碰着一个查询,两个结果集的并,查询花了近8分,还一直在查。
就一个一个查总数据来测结果集,结果出现一个报错:
消息 8115,级别 16,状态 2,第 1 行
Arithmetic overflow error converting expression to data type int.
一看是超出了类型,但是下面的存储都远远低于int的数据量的,百度一下,原来是count所求的数据量超出了int类型的总数。
COUNT_BIG 始终返回 bigint 数据类型值。COUNT 始终返回 int 数据类型值
语法
COUNT_BIG ( { [ ALL | DISTINCT ] expression } | * ) |
参数
- ALL
-
对所有的值进行聚合函数运算。ALL 是默认值。
- DISTINCT
-
指定 COUNT_BIG 返回唯一非空值的数量。
- expression
-
是任何类型的表达式。不允许使用聚合函数和子查询。
- *
-
指定应该计算所有行以返回表中行的总数。COUNT_BIG(*) 不需要任何参数,而且不能与 DISTINCT 一起使用。COUNT(*) 不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。COUNT_BIG(*) 返回指定表中的行数并将重复行计算在内。它对各行分别计数。包括包含空值的行。
返回类型
bigint
备注
COUNT_BIG(*) 返回组中的项数。包括 NULL 值和重复项。
COUNT_BIG(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。
COUNT_BIG(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。