【发布时间】:2010-11-26 20:53:26
【问题描述】:
是否可以在Count() 中指定条件?我想只计算“职位”列中具有“经理”的行。
我想在count语句中做,不使用WHERE;我之所以问这个问题是因为我需要在同一个 SELECT 中计算 Managers 和 Other (类似于 Count(Position = Manager), Count(Position = Other)) 所以 WHERE 在这个例子中对我没有用处。
【问题讨论】:
-
嘘所有 * 用户,使用 Count(SomeColumnInYourTable) where Position = 'Manager'
-
@Mark:在所有现代数据库中,这并没有任何不同。
-
@Mark & Philippe:实际上它可以产生很大的不同。如果字段可以为空且没有索引,则查询需要触及表中的每条记录,因此使用 count(*) 和 count(field) 可以获得不同的结果和不同的性能。
-
多年来,我已经分析了 count(*) 与 count(x) 的执行计划,但到目前为止,我还没有找到一个显示性能差异的执行计划。这就是为什么我真的很想看到一个存在差异的查询示例。
-
@Matthew:我们说的不是
SELECT *,而是SELECT COUNT(*),这是一个完全不同的野兽。
标签: sql sql-server tsql