当您运行select count(*) from myTable where (myVariable =1)
之类的查询时,您会收到一个符合该条件的数字。如果用任何数字替换星号,您将得到相同的答案。 SQL在这里发生了什么?
答案 0 :(得分:1)
它的等价物。
您询问表中有多少行,数字n将引用表中的第n列。即使你没有n列,这也行。
但是你甚至不需要放入任何与桌子相关的东西就会变得更好
SELECT ('X') from Table
有效
有一种观点认为SELECT(1)对性能更好,但MSSQL至少通过选择正确的plan
来查询优化器答案 1 :(得分:1)
计数检查非空值,因此您可以传递任何具有非空值的值,例如*,字段名称,静态值。
COUNT(*)
将计算每一行。 COUNT(yourColumn)
不包含yourColumn为NULL的行
答案 2 :(得分:1)
由于COUNT函数将返回相同的结果,无论如何 你包含什么NOT NULL字段作为COUNT函数参数 (即:在括号内),您可以更改COUNT的语法 函数为COUNT(1)以获得更好的数据库引擎性能 不必取回数据字段。
答案 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