Computer >> Máy Tính >  >> Lập trình >> MySQL

Sự khác biệt giữa count (*) và count (columnName) trong MySQL?

Count (*) trả về tất cả các hàng cho dù cột có chứa giá trị rỗng hay không trong khi count (columnName) trả về số lượng hàng ngoại trừ các hàng rỗng.

Đầu tiên chúng ta hãy tạo một bảng.

Sau đây là truy vấn

mysql> create table ifNotNullDemo
   -> (
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (0.54 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

mysql> insert into ifNotNullDemo values('Chris');
Query OK, 1 row affected (0.15 sec)

mysql> insert into ifNotNullDemo values('');
Query OK, 1 row affected (0.13 sec)

mysql> insert into ifNotNullDemo values('Robert');
Query OK, 1 row affected (0.24 sec)

mysql> insert into ifNotNullDemo values(null);
Query OK, 1 row affected (0.30 sec)

mysql> insert into ifNotNullDemo values(0);
Query OK, 1 row affected (0.16 sec)

Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select:

mysql> select *from ifNotNullDemo;

Điều này sẽ tạo ra kết quả sau

+--------+
| Name   |
+--------+
| Chris  |
|        |
| Robert |
| NULL   |
| 0      |
+--------+
5 rows in set (0.00 sec)

Trường hợp 1: Sau đây là bản demo của count (*) bao gồm cả null và count:

mysql> select count(*) from ifNotNullDemo;

Điều này sẽ tạo ra kết quả sau

+----------+
| count(*) |
+----------+
| 5        |
+----------+
1 row in set (0.02 sec)

Trường hợp 2: Sau đây là truy vấn về số lượng (columnName).

mysql> select count(Name) from ifNotNullDemo;

Điều này sẽ tạo ra kết quả sau

+-------------+
| count(Name) |
+-------------+
| 4           |
+-------------+
1 row in set (0.00 sec)