ใช้ ORDER BY col1, col2, ... ระบุหลายคอลัมน์ คอลัมน์แรกมีความสำคัญสูงสุด
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูล
mysql> create table DemoTable (Id int, Value int); mysql> insert into DemoTable values(100,85885), (101,885995474), (100,895943);
2. เรียงตาม Value DESC (คอลัมน์เดียว)
mysql> SELECT Id, Value FROM DemoTable ORDER BY Value DESC;
ผลลัพธ์
+------+-----------+ | Id | Value | +------+-----------+ | 101 | 885995474 | | 100 | 895943 | | 100 | 85885 | +------+-----------+
หลักการ ORDER BY หลายคอลัมน์
-- เรียง Id ASC ก่อน, แล้วค่อย Value DESC ORDER BY Id ASC, Value DESC -- ใช้ตำแหน่งคอลัมน์ (ไม่แนะนำ) ORDER BY 1 ASC, 2 DESC
ตัวอย่างข้อมูลที่เห็นชัด: Id ซ้ำกัน เรียง Value ต่อ
+------+-----------+ | Id | Value | +------+-----------+ | 100 | 85885 | -- Id 100 แถวแรก Value น้อยกว่า | 100 | 895943 | -- Id 100 แถวที่สอง Value มากกว่า | 101 | 885995474 | +------+-----------+ -- ORDER BY Id ASC, Value ASC
เคล็ดลับประสิทธิภาพ
- สร้าง Composite Index ตามลำดับ ORDER BY:
INDEX idx_sort (Id, Value) - หลีกเลี่ยงการใช้ฟังก์ชันบนคอลัมน์ใน ORDER BY
LIMITร่วมกับ ORDER BY ใช้ Index ได้ (Limit Optimization)