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

หาค่าสูงสุด (GREATEST) ระหว่างสองคอลัมน์ที่มีค่า NULL ใน MySQL

ใช้ GREATEST() ร่วมกับ IF() แปลง NULL เป็น 0 ก่อนเปรียบเทียบ

mysql> CREATE TABLE DemoTable (
    -> Value1 INT,
    -> Value2 INT
    -> );
Query OK, 0 rows affected (0.77 sec)
mysql> INSERT INTO DemoTable VALUES(78, 89);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES(19, NULL);
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES(NULL, 0);
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES(NULL, 95);
Query OK, 1 row affected (0.15 sec)
mysql> SELECT * FROM DemoTable;
+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     78 |     89 |
|     19 |   NULL |
|   NULL |      0 |
|   NULL |     95 |
+--------+--------+
4 rows in set (0.00 sec)

หาค่าสูงสุด โดยถือ NULL = 0:

mysql> SELECT GREATEST(IF(Value1 IS NULL, 0, Value1), IF(Value2 IS NULL, 0, Value2)) FROM DemoTable;
+-------------------------------------------------------------------+
| GREATEST(IF(Value1 IS NULL,0,Value1),IF(Value2 IS NULL,0,Value2)) |
+-------------------------------------------------------------------+
|                                                                89 |
|                                                                19 |
|                                                                 0 |
|                                                                95 |
+-------------------------------------------------------------------+
4 rows in set (0.00 sec)

MySQL 8.0+: ใช้ COALESCE(Value1, 0) แทน IF(Value1 IS NULL, 0, Value1) เขียนสั้นกว่า