ใช้ IFNULL() ใน ORDER BY เพื่อเลือกคอลัมน์สำรอง
สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable ( Name varchar(20), CountryName varchar(20) ); Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable values('Chris',NULL);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('David','AUS');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(NULL,'UK');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(NULL,'AUS');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(NULL,NULL);
Query OK, 1 row affected (0.11 sec)
คิวรี่เรียงตาม Name ถ้าเป็น NULL ใช้ CountryName แทน
mysql> select * from DemoTable order by ifnull(Name, CountryName);
ผลลัพธ์
+-------+-------------+ | Name | CountryName | +-------+-------------+ | NULL | NULL | | NULL | AUS | | Chris | NULL | | David | AUS | | NULL | UK | +-------+-------------+ 5 rows in set (0.00 sec)
IFNULL(expr1, expr2) คืน expr1 หากไม่ใช่ NULL มิฉะนั้นคืน expr2 | ใช้ใน ORDER BY ได้โดยตรง | COALESCE() ทำงานคล้ายกันแต่รับพารามิเตอร์ได้มากกว่า 2 ตัว