การเรียงลำดับแบบกำหนดเอง: นำค่าเฉพาะไปอยู่ท้ายสุด
เราสามารถใช้เงื่อนไข Boolean ใน ORDER BY เพื่อบังคับให้แถวที่ตรงเงื่อนไขอยู่ท้ายสุด (หรือหน้าสุด) โดยที่ค่าอื่นเรียงตามปกติ
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
Query OK, 0 rows affected (0.97 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
mysql> INSERT INTO DemoTable VALUES('Adam');
mysql> INSERT INTO DemoTable VALUES('John');
mysql> INSERT INTO DemoTable VALUES('Sam');
mysql> INSERT INTO DemoTable VALUES('Mike');
mysql> INSERT INTO DemoTable VALUES('David');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+
| FirstName |
+-----------+
| Chris |
| Adam |
| John |
| Sam |
| Mike |
| David |
+-----------+
6 rows in set (0.00 sec)
คำสั่งเรียง A-Z แต่บังคับให้ 'Mike' อยู่ท้ายสุด
mysql> SELECT * FROM DemoTable ORDER BY FirstName = 'Mike', FirstName;
ผลลัพธ์:
+-----------+
| FirstName |
+-----------+
| Adam |
| Chris |
| David |
| John |
| Sam |
| Mike |
+-----------+
6 rows in set (0.00 sec)
คำอธิบาย
FirstName = 'Mike': นิพจน์ Boolean คืนค่า 1 (TRUE) สำหรับแถวที่เป็น Mike, 0 (FALSE) สำหรับอื่นๆORDER BY FirstName = 'Mike', FirstName: เรียงตามค่า Boolean ก่อน (0 ก่อน 1) แล้วค่อยเรียงตาม FirstName ตามปกติ- ผลคือ Mike (ซึ่งมีค่า 1) จะอยู่ท้ายสุด ส่วนอื่นเรียง A-Z ตามปกติ
- หากต้องการให้อยู่หน้าสุด ให้ใช้
ORDER BY FirstName = 'Mike' DESC, FirstName