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

Hiển thị số lượng 0 cho giá trị không tồn tại khi đếm trong MySQL

Khi dùng SUM() kết hợp với biểu thức logic, MySQL coi TRUE = 1 và FALSE = 0. Kỹ thuật này cho phép đếm điều kiện và hiển thị 0 cho giá trị không có trong dữ liệu — rất hữu ích cho báo cáo thống kê.

Cú pháp

SELECT 
    SUM(cot = 'gia_tri_1') AS TenDem_1,
    SUM(cot = 'gia_tri_2') AS TenDem_2
FROM ten_bang;

Ví dụ minh họa

Bảng chỉ có trạng thái 'active':

CREATE TABLE DemoTable (Status VARCHAR(20));
INSERT INTO DemoTable VALUES ('active'), ('active'), ('active'), ('active');

Đếm cả 'active' và 'inactive' (dù 'inactive' không tồn tại):

SELECT 
    SUM(Status = 'active') AS CountOfActive,
    SUM(Status = 'inactive') AS CountOfInactive
FROM DemoTable;

Kết quả

CountOfActiveCountOfInactive
40

Tại sao cách này hay?

  • Một truy vấn duy nhất trả về nhiều cột đếm.
  • Tự động hiển thị 0 cho giá trị vắng mặt — không cần LEFT JOIN bảng tham chiếu.
  • Hiệu năng tốt: chỉ quét bảng một lần.

Mở rộng: Đếm nhiều trạng thái cùng lúc

SELECT 
    SUM(status = 'pending') AS pending,
    SUM(status = 'approved') AS approved,
    SUM(status = 'rejected') AS rejected,
    SUM(status NOT IN ('pending','approved','rejected')) AS other
FROM orders;

Lưu ý: Biểu thức cot = 'gia_tri' trả về 1 (TRUE) hoặc 0 (FALSE). SUM() cộng dồn các giá trị này. Khác với COUNT(*) chỉ đếm số hàng, cách này đếm số hàng thỏa mãn điều kiện.