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

วิธี SELECT SUM ใน MySQL คืนค่า 0 ถ้าไม่มีข้อมูล

การใช้ COALESCE() ร่วมกับ SUM()

SUM() จะคืน NULL หากไม่มีแถวตรงเงื่อนไข ใช้ COALESCE() แปลง NULL เป็น 0

รูปแบบคำสั่ง

SELECT COALESCE(SUM(yourColumnName2), 0) AS anyVariableName
FROM yourTableName
WHERE yourColumnName1 LIKE '%yourValue%';

ตัวอย่างสร้างตารางและข้อมูล

mysql> CREATE TABLE SumDemo (
    -> Words VARCHAR(100),
    -> Counter INT
    -> );
Query OK, 0 rows affected (0.93 sec)

mysql> INSERT INTO SumDemo VALUES('Are You There',10);
mysql> INSERT INTO SumDemo VALUES('Are You Not There',15);
mysql> INSERT INTO SumDemo VALUES('Hello This is MySQL',12);
mysql> INSERT INTO SumDemo VALUES('Hello This is not MySQL',14);

ข้อมูลทั้งหมด

mysql> SELECT * FROM SumDemo;
+-------------------------+---------+
| Words                   | Counter |
+-------------------------+---------+
| Are You There           | 10      |
| Are You Not There       | 15      |
| Hello This is MySQL     | 12      |
| Hello This is not MySQL | 14      |
+-------------------------+---------+
4 rows in set (0.00 sec)

กรณีมีข้อมูลตรงเงื่อนไข (มีคำว่า hello)

mysql> SELECT COALESCE(SUM(Counter), 0) AS SumOfAll 
    -> FROM SumDemo WHERE Words LIKE '%hello%';
+----------+
| SumOfAll |
+----------+
| 26       |
+----------+
1 row in set (0.00 sec)

กรณีไม่มีข้อมูลตรงเงื่อนไข (คำว่า End of MySQL)

mysql> SELECT COALESCE(SUM(Counter), 0) AS SumOfAll 
    -> FROM SumDemo WHERE Words LIKE '%End of MySQL%';
+----------+
| SumOfAll |
+----------+
| 0        |
+----------+
1 row in set (0.00 sec)

เทคนิคเพิ่มเติม:

  • IFNULL(SUM(col), 0) - MySQL specific, ทำงานเหมือน COALESCE
  • IF(SUM(col) IS NULL, 0, SUM(col)) - ใช้ IF function
  • COALESCE รองรับหลายค่า: COALESCE(a, b, c, 0) คืนค่าแรกที่ไม่ NULL