Để đếm tổng số lần một giá trị xuất hiện qua nhiều cột, dùng SUM(CASE WHEN ... THEN 1 ELSE 0 END) cho từng cột rồi cộng lại.
Ví dụ minh họa
Tạo bảng 3 cột số:
CREATE TABLE countValueMultipleColumnsDemo (
Value1 INT, Value2 INT, Value3 INT
);
INSERT INTO countValueMultipleColumnsDemo VALUES
(10, 15, 10), (20, 30, 10), (40, 10, 60);
Dữ liệu:
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 15 | 10 | | 20 | 30 | 10 | | 40 | 10 | 60 | +--------+--------+--------+
Đếm tổng số lần giá trị 10 xuất hiện trong 3 cột:
SELECT (
SUM(CASE WHEN Value1 = 10 THEN 1 ELSE 0 END) +
SUM(CASE WHEN Value2 = 10 THEN 1 ELSE 0 END) +
SUM(CASE WHEN Value3 = 10 THEN 1 ELSE 0 END)
) AS TOTAL_COUNT
FROM countValueMultipleColumnsDemo;
Kết quả: 4 (Value1: 1 lần, Value2: 1 lần, Value3: 2 lần).
Cách thay thế (MySQL 8.0+): Dùng VALUES ROW + UNPIVOT logic, hoặc JSON_TABLE nhưng phức tạp hơn. Cách CASE WHEN đơn giản, tương thích mọi phiên bản.
Mở rộng: Đếm nhiều giá trị cùng lúc:
SELECT
SUM(CASE WHEN Value1 IN (10,20) THEN 1 ELSE 0 END) +
SUM(CASE WHEN Value2 IN (10,20) THEN 1 ELSE 0 END) +
SUM(CASE WHEN Value3 IN (10,20) THEN 1 ELSE 0 END) AS Total_10_20
FROM countValueMultipleColumnsDemo;