Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khác biệt giữa COUNT(*) và COUNT(columnName) trong MySQL

COUNT(*) đếm **tất cả hàng** (kể cả hàng có NULL). COUNT(columnName) chỉ đếm hàng mà cột đó **không phải NULL**.

Ví dụ minh họa

Tạo bảng cho phép NULL:

CREATE TABLE ifNotNullDemo (Name VARCHAR(20));

INSERT INTO ifNotNullDemo VALUES ('Chris'), (''), ('Robert'), (NULL), (0);

Dữ liệu (5 hàng):

+--------+
| Name   |
+--------+
| Chris  |
|        |  -- chuỗi rỗng ''
| Robert |
| NULL   |
| 0      |  -- chuỗi '0'
+--------+

COUNT(*) đếm tất cả 5 hàng:

SELECT COUNT(*) FROM ifNotNullDemo;
+----------+
| COUNT(*) |
+----------+
| 5        |
+----------+

COUNT(Name) bỏ qua NULL, đếm 4 hàng (kể cả chuỗi rỗng '' và '0'):

SELECT COUNT(Name) FROM ifNotNullDemo;
+-------------+
| COUNT(Name) |
+-------------+
| 4           |
+-------------+

Tóm tắt:

HàmĐếm NULL?Đếm chuỗi rỗng ''?
COUNT(*)CóCó
COUNT(col)KhôngCó
COUNT(DISTINCT col)KhôngCó (1 lần)

Ứng dụng: Dùng COUNT(*) để đếm tổng số hàng. Dùng COUNT(col) để đếm số hàng có dữ liệu thực tế (not NULL) cho cột đó.