SQL计数功能的工作原理

时间:2012-05-10 12:34:00

标签: sql

当您运行select count(*) from myTable where (myVariable =1)之类的查询时,您会收到一个符合该条件的数字。如果用任何数字替换星号,您将得到相同的答案。 SQL在这里发生了什么?

5 个答案:

答案 0 :(得分:1)

它的等价物。

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

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

有一种观点认为SELECT(1)对性能更好,但MSSQL至少通过选择正确的plan

来查询优化器

答案 1 :(得分:1)

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

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

Refer many ways to use Count function

答案 2 :(得分:1)

  

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

来源:SQL: COUNT Function

答案 3 :(得分:0)

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

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

答案 4 :(得分: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