Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีคำนวณผลรวมค่าของแถวเดียว (Row-wise Sum) ใน MySQL

การบวกค่าคอลัมน์หลายคอลัมน์ในแถวเดียวกัน ต้องจัดการค่า 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