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

วิธีป้องกันค่า NULL จากคำสั่ง SELECT MAX() เมื่อตารางว่างเปล่า

สามารถใช้ฟังก์ชัน COALESCE() ร่วมกับฟังก์ชันรวม MAX() เพื่อแก้ปัญหานี้ได้

ไวยากรณ์

SELECT COALESCE(MAX(`yourColumnName`), 0) FROM yourTableName;

สร้างตารางตัวอย่าง

mysql> create table avoidNullDemo (
    -> `rank` int
    -> );
Query OK, 0 rows affected (0.53 sec)

เพิ่มข้อมูลตัวอย่าง (รวมค่า NULL)

mysql> insert into avoidNullDemo values(10);
Query OK, 1 row affected (0.20 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.18 sec)
mysql> insert into avoidNullDemo values(20);
Query OK, 1 row affected (0.17 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.11 sec)
mysql> insert into avoidNullDemo values(100);
Query OK, 1 row affected (0.11 sec)
mysql> insert into avoidNullDemo values(NULL);
Query OK, 1 row affected (0.16 sec)

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

mysql> select * from avoidNullDemo;

ผลลัพธ์:

+------+
| rank |
+------+
| 10   |
| NULL |
| 20   |
| NULL |
| 100  |
| NULL |
+------+
6 rows in set (0.00 sec)

ใช้ COALESCE() กับ MAX()

mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;

ผลลัพธ์:

+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 100                      |
+--------------------------+
1 row in set (0.00 sec)

ทดสอบกับตารางว่างเปล่า

mysql> truncate table avoidNullDemo;
Query OK, 0 rows affected (0.92 sec)

mysql> select COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;

ผลลัพธ์:

+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 0                        |
+--------------------------+
1 row in set (0.00 sec)

คำอธิบาย

  • MAX() จะคืนค่า NULL เมื่อตารางไม่มีข้อมูล หรือคอลัมน์มีแต่ค่า NULL
  • COALESCE() จะคืนค่าอาร์กิวเมนต์แรกที่ไม่ใช่ NULL ดังนั้น COALESCE(MAX(rank), 0) จะคืนค่า 0 แทน NULL
  • วิธีนี้ใช้ได้กับฟังก์ชันรวมอื่นๆ เช่น MIN(), SUM(), AVG() เช่นกัน