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

Tổng các giá trị trên một hàng (row) trong MySQL

Khi cộng các cột trên cùng một hàng, cần xử lý NULL vì NULL + bất_kỳ_gì = NULL.

Trường hợp 1: Không có NULL (đơn giản)

SELECT cot1 + cot2 + cot3 AS tong 
FROM ten_bang;

Trường hợp 2: Có thể có NULL (khuyến nghị)

Dùng IFNULL(cot, 0) hoặc COALESCE(cot, 0):

SELECT IFNULL(cot1,0) + IFNULL(cot2,0) + IFNULL(cot3,0) AS tong 
FROM ten_bang;

Ví dụ minh họa

Tạo bảng SumValueOfSingleRow:

CREATE TABLE SumValueOfSingleRow (
    Id INT NOT NULL AUTO_INCREMENT,
    FirstValue INT,
    SecondValue INT,
    ThirdValue INT,
    PRIMARY KEY (Id)
);

INSERT INTO SumValueOfSingleRow (FirstValue, SecondValue, ThirdValue) VALUES
(1, 0, 1), (1, NULL, 0), (NULL, NULL, NULL);

Sai khi không xử lý NULL

SELECT FirstValue + SecondValue + ThirdValue AS SingleRowSum 
FROM SumValueOfSingleRow;
+--------------+
| SingleRowSum |
+--------------+
|            2 |
|         NULL |
|         NULL |
+--------------+

Đúng với IFNULL

SELECT IFNULL(FirstValue,0) + IFNULL(SecondValue,0) + IFNULL(ThirdValue,0) AS SingleRowSum 
FROM SumValueOfSingleRow;
+--------------+
| SingleRowSum |
+--------------+
|            2 |
|            1 |
|            0 |
+--------------+

Mẹo: COALESCE(cot1, cot2, ..., 0) linh hoạt hơn nếu muốn giá trị mặc định khác 0.