MySQL中的COUNT函數可以用來統計表中某個字段的數據數量,可以用于查詢結果的一個部分和計算結果的一個整數值。COUNT函數默認會排除null值,但是在某些情況下,我們需要計算所有的行數,包括null值,這就需要使用COUNT(*)函數。
不過,有時候我們也會遇到一些數據不屬于任何一種類型的情況,這些就是所謂的無數據類型。這種情況下,MySQL的COUNT函數會將其當成一條記錄計算。
例如,在下面這個表中,有一行數據的age是NULL,而沒有一個人的age值為0。 +----+------+------+--------+ | id | name | age | gender | +----+------+------+--------+ | 1 | Tom | 20 | Male | | 2 | Jack | NULL | Male | | 3 | Lucy | 18 | Female | | 4 | Tony | 30 | Male | +----+------+------+--------+ 那么我們分別使用COUNT和COUNT(*)函數統計行數: SELECT COUNT(age) FROM users; 結果為3,因為COUNT函數會排除NULL值,只計算存在的值。 SELECT COUNT(*) FROM users; 結果為4,因為COUNT(*)函數會將NULL值當作一條記錄計算。
因此,當我們需要統計一份數據表中的全部行數時,應該盡量使用COUNT(*)函數。但在某些情況下,由于NULL值的存在,我們還需要結合COUNT函數來獲取正確的統計結果。