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

เรียงลำดับหลายคอลัมน์ใน MySQL (Multiple Column Sorting)

ใช้ 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)