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

Đếm giá trị xuất hiện trên nhiều cột trong MySQL

Để đế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;