在 MySQL 中,SELECT 查詢預設不保證資料順序。若需依特定欄位排序,必須使用 ORDER BY 子句。本文詳細說明語法、升降冪排序、多欄位排序及效能考量。
SELECT <欄位清單> FROM <表名> [WHERE <條件>] ORDER BY <排序欄位> [ASC | DESC];
假設 test 表包含 t_id、t_name 欄位:
mysql> SELECT t_id, t_name FROM test ORDER BY t_id;
+------+--------+
| t_id | t_name |
+------+--------+
| 1 | name1 |
| 2 | name2 |
+------+--------+
mysql> SELECT t_id, t_name FROM test ORDER BY t_id DESC;
+------+--------+
| t_id | t_name |
+------+--------+
| 2 | name2 |
| 1 | name1 |
+------+--------+
先按部門編號升冪,再按薪資降冪:
SELECT * FROM emp ORDER BY deptno ASC, sal DESC;
SELECT * FROM articles ORDER BY created_at DESC LIMIT 10 OFFSET 20;
sort_buffer_size,適當調大可減少磁碟臨時表。EXPLAIN 中出現 Using filesort 表示需外部排序,建議優化索引。善用 ORDER BY 不僅能讓報表資料更易讀,更是分頁、Top-N 查詢的基石。實務上請根據業務需求選擇適當排序欄位與索引策略。