0

当您运行查询时,select count(*) from myTable where (myVariable =1)您会得到一个符合该条件的数字。如果你用任何数字替换星号,你会得到相同的答案。这里的 SQL 是怎么回事?

4

5 回答 5

1

它的等价物。

您在询问表格中有多少行,数字 n 将引用表格中的第 n 列。即使您没有 n 列,这也可以。

但它会变得更好,你甚至不需要放入任何与表格相关的东西 SELECT ('X') from Table都是有效的

有一种观点认为 SELECT(1) 性能更好,但 MSSQL 至少查询优化器会通过选择正确的计划来解决这个问题

于 2012-05-10T12:38:06.277 回答
1

计数检查非空值,因此您可以传递任何具有非空值的值,例如 *、字段名称、静态值。

COUNT(*)将计算每一行。COUNT(yourColumn)不会包含 yourColumn 为 NULL 的行

参考多种使用计数功能的方法

于 2012-05-10T12:39:27.183 回答
1

由于 COUNT 函数将返回相同的结果,无论您包含哪些 NOT NULL 字段作为 COUNT 函数参数(即:在括号内),您可以将 COUNT 函数的语法更改为 COUNT(1) 以获得更好的性能,因为数据库引擎不必取回数据字段。

来源:SQL:COUNT 函数

于 2012-05-10T12:40:43.720 回答
0

鲜为人知的功能是您可以查询select count(distinct someColumn) from SomeTable以获取特定列的唯一计数。然后,您显然选择哪一列确实很重要。

否则其他答案已经解释过了。

于 2012-05-10T12:41:53.027 回答
0

count(expression)计算 expression is not null.

如果您尝试count(1),那么您将获得所有行,因为 1 永远不会为空。

如果您尝试count(column_name),那么您将计算column_name is not null.

http://docs.oracle.com/cd/B10500_01/server.920/a96540/functions26a.htm#82699

于 2012-05-10T12:43:50.000 回答