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

หาค่าสูงสุดจากหลายคอลัมน์ที่มีค่า NULL และไม่ใช่ NULL ใน MySQL

ใช้ COALESCE() แปลง NULL เป็น 0 แล้วหาค่าสูงสุดด้วย GREATEST()

สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable ( Value1 int, Value2 int, Value3 int ); 
Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable values(NULL,80,76); 
Query OK, 1 row affected (0.21 sec) 
mysql> insert into DemoTable values(NULL,NULL,100); 
Query OK, 1 row affected (0.12 sec) 
mysql> insert into DemoTable values(56,NULL,45); 
Query OK, 1 row affected (0.20 sec) 
mysql> insert into DemoTable values(56,120,90); 
Query OK, 1 row affected (0.21 sec)

คิวรี่หาค่าสูงสุดต่อแถว

mysql> select greatest(coalesce(Value1,0),coalesce(Value2,0),coalesce(Value3,0)) from DemoTable;

ผลลัพธ์

+--------------------------------------------------------------------+ 
| greatest(coalesce(Value1,0),coalesce(Value2,0),coalesce(Value3,0)) | 
+--------------------------------------------------------------------+ 
|                                                                  80 | 
|                                                                 100 | 
|                                                                  56 | 
|                                                                 120 | 
+--------------------------------------------------------------------+ 
4 rows in set (0.00 sec)

หลักการ: COALESCE(col, 0) คืนค่าแรกที่ไม่ใช่ NULL (หากทั้งหมดเป็น NULL คืน 0) | GREATEST() หาค่าสูงสุดจากรายการค่า