2016-12-03 22 views
0

我有一個帶有長度字段的音樂曲目表,它存儲關於每個單獨曲目多長時間的信息。我試圖查詢數據庫以找出最大麴目長度,最小曲目長度,並且我想要返回列出長度(IS NOT NULL)的曲目數量。當COUNT函數使用IS NOT NULL時得到不正確的結果 - MySQL

以下是該語句:

SELECT MAX(length), MIN(length), COUNT(length) 
FROM tracks WHERE length IS NOT NULL; 

的問題是值COUNT()返回的是完全相同的我是否包括未在年底或NOT NULL操作。該表大約有25個條目是NULL,所以當我將NOT NULL運算符添加到語句的末尾時,我肯定應該爲COUNT()獲得更低的結果?

回答

1

文檔說計數會忽略空列 http://dev.mysql.com/doc/refman/5.7/en/counting-rows.html

包括where子句不會有所作爲。

+0

這是正確的。如果要計算* WHERE *所匹配的所有行,請使用COUNT(*)或COUNT(1)(它們相同)。如果你想對col1不爲null的行進行計數,這正是'COUNT(col1)'所做的。 –

0

反引號是你的朋友:長度是在MySQL的函數名稱,如果你想Ø用它作爲字段的名稱,您必須把它放在反引號這樣的:

SELECT MAX(`length`), MIN(`length`), COUNT(`length`) 
FROM tracks WHERE `length` IS NOT NULL;