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.