理解COUNT(*) 和COUNT(column_name) 之間的差異
MySQL 提供了兩個計數函數:COUNT(*)和COUNT(列名)。這兩個函數都會計算結果集中的行數,但它們對 NULL 值的處理有所不同。
COUNT(*)
COUNT(column_name)
主要差異
Feature | COUNT(*) | COUNT(column_name) |
---|---|---|
NULL Values | Includes rows with NULL values | Excludes rows with NULL values |
Performance | May be slower in some cases even if the column has no NULL values | Generally slower due to the need to check each value |
COUNT(> >COUNT(1) 相當於COUNT(*)。這是因為 1 永遠不可能為 NULL。因此,它也會計算結果集中的所有行。
範例考慮下面一個名為「table1」的表格:
現在,讓我們來比較一下三個計數函數的結果:CREATE TABLE table1 (x INT NULL); INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT COUNT(*) AS a, COUNT(x) AS b, COUNT(1) AS c FROM table1;結果:
如您所見,COUNT(
a b c 3 2 3) 統計了所有三行,無論「x」列中的NULL 值如何。 COUNT(x) 排除具有 NULL 值的行,導致計數為 2。 COUNT(1) 產生與 COUNT(
) 相同的結果,因為 1 不能為 NULL。
以上是COUNT(*) 與 COUNT(column_name):MySQL 中的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!