การบวกค่าคอลัมน์หลายคอลัมน์ในแถวเดียวกัน ต้องจัดการค่า NULL ให้ถูกต้อง
กรณี 1: ไม่มีค่า NULL
SELECT col1 + col2 + col3 AS total FROM yourTable;
กรณี 2: มีค่า NULL (แนะนำ)
SELECT IFNULL(col1,0) + IFNULL(col2,0) + IFNULL(col3,0) AS total FROM yourTable;
ตัวอย่างการใช้งาน
สร้างตาราง SumValueOfSingleRow:
mysql> CREATE TABLE SumValueOfSingleRow (
-> Id INT NOT NULL AUTO_INCREMENT,
-> FirstValue INT,
-> SecondValue INT,
-> ThirdValue INT,
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล (มีค่า NULL):
mysql> INSERT INTO SumValueOfSingleRow(FirstValue, SecondValue, ThirdValue) VALUES(1, 0, 1); mysql> INSERT INTO SumValueOfSingleRow(FirstValue, SecondValue, ThirdValue) VALUES(1, NULL, 0); mysql> INSERT INTO SumValueOfSingleRow(FirstValue, SecondValue, ThirdValue) VALUES(NULL, NULL, NULL);
ข้อมูลในตาราง
+----+------------+-------------+------------+ | Id | FirstValue | SecondValue | ThirdValue | +----+------------+-------------+------------+ | 1 | 1 | 0 | 1 | | 2 | 1 | NULL | 0 | | 3 | NULL | NULL | NULL | +----+------------+-------------+------------+
❌ ผลลัพธ์ผิด (ไม่จัดการ NULL)
mysql> SELECT FirstValue + SecondValue + ThirdValue AS SingleRowSum
-> FROM SumValueOfSingleRow;
+--------------+ | SingleRowSum | +--------------+ | 2 | | NULL | | NULL | +--------------+
✅ ผลลัพธ์ถูกต้อง (ใช้ IFNULL)
mysql> SELECT IFNULL(FirstValue,0) + IFNULL(SecondValue,0) + IFNULL(ThirdValue,0) AS SingleRowSum
-> FROM SumValueOfSingleRow;
+--------------+ | SingleRowSum | +--------------+ | 2 | | 1 | | 0 | +--------------+
สรุป: ต้องใช้ IFNULL(column, 0) ทุกคอลัมน์ที่อาจมีค่า NULL มิฉะนั้นผลรวมจะกลายเป็น NULL