การใช้ 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, ทำงานเหมือน COALESCEIF(SUM(col) IS NULL, 0, SUM(col))- ใช้ IF function- COALESCE รองรับหลายค่า:
COALESCE(a, b, c, 0)คืนค่าแรกที่ไม่ NULL