Để lấy số lượng bản ghi không NULL của một cột từ nhiều bảng khác nhau trong một lần truy vấn, bạn có thể sử dụng **subquery** trong mệnh đề SELECT.
Cú pháp chung
SELECT
(SELECT COUNT(ten_cot) FROM bang_1) AS ten_alias_1,
(SELECT COUNT(ten_cot) FROM bang_2) AS ten_alias_2,
...;
COUNT(ten_cot) chỉ đếm các hàng có giá trị khác NULL.
Ví dụ minh họa
Tạo bảng 1 và chèn dữ liệu (có NULL):
mysql> CREATE TABLE DemoTable1 (Id INT); mysql> INSERT INTO DemoTable1 VALUES (1), (NULL), (2), (3);
Tạo bảng 2 và chèn dữ liệu:
mysql> CREATE TABLE DemoTable2 (Id INT); mysql> INSERT INTO DemoTable2 VALUES (10), (NULL), (NULL);
Truy vấn đếm NOT NULL từ cả hai bảng:
mysql> SELECT
-> (SELECT COUNT(Id) FROM DemoTable1) AS CountFirstTableId,
-> (SELECT COUNT(Id) FROM DemoTable2) AS CountSecondTableId;
Kết quả:
+-------------------+--------------------+ | CountFirstTableId | CountSecondTableId | +-------------------+--------------------+ | 3 | 1 | +-------------------+--------------------+
Giải thích: Bảng 1 có 3 giá trị không NULL (1,2,3), bảng 2 chỉ có 1 giá trị không NULL (10).
Mở rộng
- Có thể thêm nhiều bảng hơn bằng cách thêm subquery.
- Để đếm tất cả hàng (kể cả NULL), dùng
COUNT(*)thay vìCOUNT(cot). - Kết hợp với
WHEREtrong subquery để lọc thêm điều kiện.