Để đếm chính xác tổng số hàng trong bảng (kể cả hàng có NULL), sử dụng hàm tập hợp COUNT(*).
Cú pháp
SELECT COUNT(*) AS ten_alias FROM ten_bang;
Ví dụ minh họa
Tạo bảng và chèn dữ liệu (có hàng trùng lặp và NULL):
mysql> CREATE TABLE CountAllRowsDemo (
-> Id INT,
-> Name VARCHAR(10),
-> Age INT
-> );
mysql> INSERT INTO CountAllRowsDemo VALUES(1, 'John', 23);
mysql> INSERT INTO CountAllRowsDemo VALUES(101, 'Carol', 21);
mysql> INSERT INTO CountAllRowsDemo VALUES(201, 'Sam', 24);
mysql> INSERT INTO CountAllRowsDemo VALUES(106, 'Mike', 26);
mysql> INSERT INTO CountAllRowsDemo VALUES(290, 'Bob', 25);
mysql> INSERT INTO CountAllRowsDemo VALUES(500, 'David', 27);
mysql> INSERT INTO CountAllRowsDemo VALUES(500, 'David', 27); -- trùng lặp
mysql> INSERT INTO CountAllRowsDemo VALUES(NULL, NULL, NULL); -- hàng NULL
mysql> INSERT INTO CountAllRowsDemo VALUES(NULL, NULL, NULL); -- hàng NULL
Dữ liệu (9 hàng):
+------+-------+------+ | Id | Name | Age | +------+-------+------+ | 1 | John | 23 | | 101 | Carol | 21 | | 201 | Sam | 24 | | 106 | Mike | 26 | | 290 | Bob | 25 | | 500 | David | 27 | | 500 | David | 27 | | NULL | NULL | NULL | | NULL | NULL | NULL | +------+-------+------+
Đếm tổng số hàng:
mysql> SELECT COUNT(*) AS TotalNumberOfRows FROM CountAllRowsDemo;
Kết quả:
+-------------------+ | TotalNumberOfRows | +-------------------+ | 9 | +-------------------+
Lưu ý quan trọng
COUNT(*): Đếm **tất cả hàng**, kể cả hàng toàn NULLCOUNT(cot): Chỉ đếm hàng cócot IS NOT NULLCOUNT(DISTINCT cot): Đếm giá trị duy nhất không NULL
Ví dụ so sánh:
SELECT COUNT(*) AS tong, COUNT(Id) AS co_id, COUNT(DISTINCT Id) AS id_duy_nhat FROM CountAllRowsDemo; -- Kết quả: tong=9, co_id=7, id_duy_nhat=6