ใช้ 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) เขียนสั้นกว่า