ใช้เงื่อนไข Boolean ใน ORDER BY เพื่อ "ปักหมุด" (Pin) แถวที่มีค่าเฉพาะไว้บนสุด แล้วค่อยเรียงส่วนที่เหลือตามปกติ
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
id int );
Query OK, 0 rows affected (0.52 sec)
เพิ่มข้อมูลตัวเลขสุ่ม
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.43 sec) mysql> insert into DemoTable values(7); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values(8); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(6); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(9); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(11); Query OK, 1 row affected (0.12 sec)
แสดงข้อมูลก่อนจัดเรียง
mysql> select * from DemoTable;
+------+ | id | +------+ | 10 | | 7 | | 8 | | 6 | | 9 | | 11 | +------+ 6 rows in set (0.00 sec)
คำสั่ง ORDER BY ปักหมุด id=10 ไว้บนสุด แล้วเรียงน้อยไปมาก
mysql> select * from DemoTable order by id = 10 DESC, id ASC;
ผลลัพธ์
+------+ | id | +------+ | 10 | | 6 | | 7 | | 8 | | 9 | | 11 | +------+ 6 rows in set (0.00 sec)
คำอธิบาย: id = 10 คืนค่า 1 (TRUE) สำหรับแถวที่ id=10 และ 0 (FALSE) สำหรับอื่นๆ DESC ทำให้ TRUE (1) อยู่บนสุด แล้ว id ASC เรียงส่วนที่เหลือจากน้อยไปมาก
ประยุกต์ใช้: แสดงสินค้าแนะนำ/โปรโมชั่นไว้บนสุด แล้วเรียงสินค้าอื่นตามปกติ