Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL计数函数工作_Sql - Fatal编程技术网

SQL计数函数工作

SQL计数函数工作,sql,Sql,当您从myTable(myVariable=1)中运行类似于select count(*)的查询时,您会得到一个符合该条件的返回数字。如果用任意数字替换星号,则得到相同的答案。SQL在这里是怎么回事?它的等价物 您询问的是表中有多少行,数字n将引用表中的第n列。即使您没有n列,这也可以工作 但它会变得更好,你甚至不需要在桌子上放任何东西 从表中选择('X')有效 有一种学派认为SELECT(1)的性能更好,但MSSQL至少查询优化程序通过选择正确的等价项来处理这一问题 您询问的是表中有多少行,数

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

它的等价物

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

但它会变得更好,你甚至不需要在桌子上放任何东西
从表中选择('X')
有效

有一种学派认为SELECT(1)的性能更好,但MSSQL至少查询优化程序通过选择正确的等价项来处理这一问题

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

但它会变得更好,你甚至不需要在桌子上放任何东西
从表中选择('X')
有效


有一种学派认为SELECT(1)的性能更好,但MSSQL至少查询优化程序会通过选择正确的计数检查非空值来处理这一问题,因此您可以传递任何具有非空值的值,例如*、字段名、静态值

COUNT(*)
将对每一行进行计数<代码>计数(yourColumn)
不包括yourColumn为空的行


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

COUNT(*)
将对每一行进行计数<代码>计数(yourColumn)不包括yourColumn为空的行

因为COUNT函数将返回相同的结果,而不考虑 包含哪些非空字段作为计数函数参数 (即:括号内),您可以更改计数的语法 函数计数(1)以获得更好的数据库引擎性能 将不必取回数据字段

资料来源:

因为COUNT函数将返回相同的结果,而不考虑 包含哪些非空字段作为计数函数参数 (即:括号内),您可以更改计数的语法 函数计数(1)以获得更好的数据库引擎性能 将不必取回数据字段


来源:

鲜为人知的功能是,您可以查询
从SomeTable中选择count(distinct someColumn)
以获得特定列的唯一计数。那么你选择哪一列就很重要了


否则,其他答案已经解释了这一点

鲜为人知的特性是,您可以从SomeTable中查询
选择count(distinct someColumn)以获得某一列的唯一计数。那么你选择哪一列就很重要了

否则,其他答案已经解释了这一点

计数(表达式)
表达式不为空的行进行计数

如果您尝试计数(1)
,那么您将得到所有行,因为1从不为空

如果尝试
计数(列名称)
,则将对
列名称不为null的行进行计数

计数(表达式)
表达式不为空的行进行计数

如果您尝试计数(1)
,那么您将得到所有行,因为1从不为空

如果尝试
计数(列名称)
,则将对
列名称不为null的行进行计数


你得到了相同的计数,这让你感到惊讶-那么你期望的是什么呢??
count()
不应该将数字作为参数,而应该将字段名称(或
*
)作为参数。dup我期望当你在其中放入类似计数(343)的内容时,查询会失败,不要忽略它。重复您得到的是相同的计数,这让您感到惊讶-那么您期望的是什么呢??
count()
不应该将数字作为参数,而应该将字段名称(或
*
)作为参数。dup我希望当您在其中放入类似计数(343)的内容时,查询会失败,不要忽视它。谢谢你回答这个问题,而不是大发雷霆。这会考虑空值吗?假设您选择了count(5),并且第五列中充满了null,那么它仍然会返回表中的行数吗?它不会。从dual中选择count(5)将产生一个错误。查询编译器将忽略它。感谢您回答这个问题,而不是爆破它。这会考虑空值吗?假设您选择了count(5),并且第五列中充满了null,那么它仍然会返回表中的行数吗?它不会。从dual中选择count(5)将产生一个错误。查询编译器将忽略它。我非常确定大多数数据库不会返回count(*)与count(1)的数据字段。这是数据库优化器的一个非常基本的优化。我很确定大多数数据库不会返回计数(*)而不是计数(1)的数据字段。这是数据库优化器的一个非常基本的优化。