2009-08-30 42 views

回答

16

正確。 COUNT(*)是表中的所有行,COUNT(表達式)是表達式僅爲非null的地方。

如果所有列均爲NULL(表示您沒有主鍵,所以這不應發生在規範化數據庫中)COUNT(*)仍然返回插入的所有行。只是不要那樣做。

你可以認爲「在任何一列」「表」 *符號的含義,而不是的。

+0

有什麼辦法來算空太,與COUNT(表達式)? – 2014-04-04 11:02:05

+0

如果您執行COUNT(*),則無論這些行的內容如何,​​都會對所有行進行計數。如果您想要查看具有SomeColumn值的行的總計行數和行數,請執行SELECT COUNT(*)AllRows,COUNT(SomeColumn)爲SomeColumnCount。 AllRows將是查詢返回的總行數,而SomeColumnCount將是SomeColumn具有值的行數。 – Godeke 2014-04-08 04:57:48

2

count(*)不是非空列,它只是要求計算所有行的方式。大致相當於count(1)

4

只是檢查:

SELECT COUNT(*)

返回-1,用空值填充

SELECT COUNT(場)

返回0

我不要一個記錄沒有看到空值記錄中的點。這樣的記錄一定不存在。

+0

「我沒有看到空值記錄中的點」。哦,它剛剛出現在我的腦海裏。現在當你說這個我想你是對的時候,當我問的時候,沒有想到這件事。 – iceangel89 2009-08-31 14:16:58

12

如果你要計算的NULL爲好,儘量

SELECT COUNT(IFNULL(col, 1)) FROM table; 
+0

大@Roey – 2016-10-13 10:17:21