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

Đếm giá trị NOT NULL từ nhiều bảng trong một truy vấn MySQL duy nhất

Để 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 WHERE trong subquery để lọc thêm điều kiện.