当您运行查询时,select count(*) from myTable where (myVariable =1)
您会得到一个符合该条件的数字。如果你用任何数字替换星号,你会得到相同的答案。这里的 SQL 是怎么回事?
5 回答
它的等价物。
您在询问表格中有多少行,数字 n 将引用表格中的第 n 列。即使您没有 n 列,这也可以。
但它会变得更好,你甚至不需要放入任何与表格相关的东西
SELECT ('X') from Table
都是有效的
有一种观点认为 SELECT(1) 性能更好,但 MSSQL 至少查询优化器会通过选择正确的计划来解决这个问题
计数检查非空值,因此您可以传递任何具有非空值的值,例如 *、字段名称、静态值。
COUNT(*)
将计算每一行。COUNT(yourColumn)
不会包含 yourColumn 为 NULL 的行
由于 COUNT 函数将返回相同的结果,无论您包含哪些 NOT NULL 字段作为 COUNT 函数参数(即:在括号内),您可以将 COUNT 函数的语法更改为 COUNT(1) 以获得更好的性能,因为数据库引擎不必取回数据字段。
来源:SQL:COUNT 函数
鲜为人知的功能是您可以查询select count(distinct someColumn) from SomeTable
以获取特定列的唯一计数。然后,您显然选择哪一列确实很重要。
否则其他答案已经解释过了。
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