首頁  >  文章  >  資料庫  >  COUNT(*) 與 COUNT(column_name):MySQL 中的差異是什麼?

COUNT(*) 與 COUNT(column_name):MySQL 中的差異是什麼?

Patricia Arquette
Patricia Arquette原創
2024-11-21 06:39:11960瀏覽

COUNT(*) vs. COUNT(column_name): What's the Difference in MySQL?

理解COUNT(*) 和COUNT(column_name) 之間的差異

MySQL 提供了兩個計數函數:COUNT(*)和COUNT(列名)。這兩個函數都會計算結果集中的行數,但它們對 NULL 值的處理有所不同。

COUNT(*)

  • 計算所有行結果集中,包括任何列中具有 NULL 值的行。
  • 語法:COUNT(*)

COUNT(column_name)

  • 只計算指定列(column_name) 不為N的行。
  • 語法: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn