了解COUNT(*) 與COUNT(column_name) 之間的差異
使用SQL 查詢時,必須掌握兩者之間的區別COUNT(*) 和COUNT(column_name) 以確保結果準確。
COUNT(*)
COUNT(*) 對結果集中的所有行進行計數,無論它們是否包含 NULL 值。這是最具包容性的計數,因為它考慮了滿足查詢條件的每一行。
COUNT(column_name)
COUNT(column_name) 僅對那些符合查詢條件的行進行計數指定列不為 NULL。此函數會忽略給定列中缺少值的行。
效能影響
COUNT() 的計算強度可能比 COUNT(column_name) 更高。表中有很多 NULL 值。由於 COUNT() 無論如何都必須檢查每一行,因此在這種情況下它的執行速度可能會較慢。
COUNT(*)
COUNT(1) 的替代方法是COUNT(*) 的替代方法,也傳回總行數。但是,無論其他列值為何,它的計算結果始終為非 NULL 值。
實驗演示
為了說明結果的差異,請考慮下表和查詢:
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;
結果:
a b c 3 2 3
如您所見,COUNT() 傳回3,因為它計算所有行,而COUNT( x) 傳回2,不包含NULL 值行。 COUNT(1) 與 COUNT() 沒有區別,也回傳 3。
以上是COUNT(*) 與 COUNT(column_name):有什麼區別以及何時應該使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!