count(*)其中cond = val或count(cond = val)

时间:2010-10-28 06:37:01

标签: sql select count where-clause

这两种方法有什么区别?

select count(*) from `table` where `column` = 'value';

select count(`column` = 'value') from `table`;

对我来说,他们似乎做同样的事情;我认为这不是数据库的情况。一种方法是否比另一种更好地利用指数?

在这种情况下,我使用MySQL,但这里首选一般答案。

2 个答案:

答案 0 :(得分:3)

count(column ='value')

通常似乎暗示你在计算比较的布尔结果,它应该计算表中的所有行,尽管你的特定DBMS可能有例外。

过滤where子句的查询。如果您需要为不同的数据库编写类似的查询,这将是一个好习惯。

答案 1 :(得分:0)

通过mySQL运行样本会产生不同的结果。您发布的第二个查询不限制结果集 - 返回所有行。但是,第一个查询确实如此。