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

MySQL ORDER BY เลือกคอลัมน์สำรองเมื่อคอลัมน์หลักเป็น NULL

ใช้ 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 ตัว