2010-10-28 75 views
0

這兩種方法有什麼區別?count(*)其中cond = val或count(cond = val)

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

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

對我來說,他們似乎做同樣的事情;我認爲這不是數據庫的情況。一種方法是否比其他方法更好地利用指標?

在這種情況下,我使用MySQL,但一般的答案在這裏是首選。

+0

您需要指定您正在使用的DBMS。 – 2010-10-28 06:37:39

回答

3

計數(column =「值」)

一般似乎意味着您計算比較,這應該算表中的所有行,雖然也許你特定的DBMS有異常的布爾結果。

在where子句中過濾查詢。如果您需要爲其他數據庫編寫類似的查詢,這將是一個好習慣。

0

通過mySQL運行您的示例會產生不同的結果。您發佈的第二個查詢不會限制結果集 - 返回所有行。然而,第一個查詢的確如此。

+0

你似乎是正確的,我不知道爲什麼我認爲不然。 – 2010-10-28 06:50:01

+0

奇怪的是,你可能會做一個SUM(CAST('column' ='value')AS BIT)並檢索計數,但這似乎是很多晦澀的工作以避免where子句。根據你的數據庫管理系統,這個轉換可能是不必要的。 – wllmsaccnt 2010-10-28 06:53:26