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

ฉันจะปรับแต่งผลลัพธ์ของฟังก์ชัน MySQL SUM () เป็น 0 แทนที่จะเป็น NULL ได้อย่างไรเมื่อไม่มีแถวที่ตรงกัน


อย่างที่เราทราบดีว่าฟังก์ชัน SUM() จะคืนค่า NULL หากไม่มีแถวที่ตรงกัน แต่บางครั้งเราต้องการให้มันคืนค่าศูนย์แทนที่จะเป็น NULL เพื่อจุดประสงค์นี้ เราสามารถใช้ฟังก์ชัน MySQL COALESCE() ซึ่งยอมรับสองอาร์กิวเมนต์ และคืนค่าอาร์กิวเมนต์ที่สอง หากอาร์กิวเมนต์แรกเป็น NULL มิฉะนั้น จะส่งคืนอาร์กิวเมนต์แรก เพื่อให้เข้าใจแนวคิดข้างต้น ให้พิจารณาตาราง 'employee_tbl' ซึ่งมีบันทึกดังต่อไปนี้ -

mysql> SELECT * FROM employee_tbl;
+------+------+------------+--------------------+
| id   | name | work_date  | daily_typing_pages |
+------+------+------------+--------------------+
| 1    | John | 2007-01-24 |        250         |
| 2    | Ram  | 2007-05-27 |        220         |
| 3    | Jack | 2007-05-06 |        170         |
| 3    | Jack | 2007-04-06 |        100         |
| 4    | Jill | 2007-04-06 |        220         |
| 5    | Zara | 2007-06-06 |        300         |
| 5    | Zara | 2007-02-06 |        350         |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)

ตอนนี้ ฟังก์ชัน MySQL SUM() จะคืนค่า 0 เมื่อเราใช้ฟังก์ชัน COALESCE กับ SUM() เพื่อค้นหาจำนวนหน้าที่พิมพ์โดย 'Mohan' ซึ่งเป็นชื่อที่ไม่อยู่ในคอลัมน์ 'Name' -

mysql> SELECT COALESCE(SUM(daily_typing_pages),0)AS ‘SUM(daily_typing_pages)’FROM employee_tbl WHERE Name = ‘Mohan’;
+-------------------------+
| SUM(daily_typing_pages) |
+-------------------------+
|           0             |
+-------------------------+
1 row in set (0.00 sec)