首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL ORDER BY 子句完整指南:查詢結果排序實戰

     編輯:MySQL 資料庫相關知識

在 MySQL 中,SELECT 查詢預設不保證資料順序。若需依特定欄位排序,必須使用 ORDER BY 子句。本文詳細說明語法、升降冪排序、多欄位排序及效能考量。

基本語法結構

SELECT <欄位清單> FROM <表名> [WHERE <條件>] ORDER BY <排序欄位> [ASC | DESC];
  • 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;

搭配 LIMIT 分頁

SELECT * FROM articles ORDER BY created_at DESC LIMIT 10 OFFSET 20;

效能優化提醒

  • 排序欄位若有索引,MySQL 可直接使用索引順序避免 filesort。
  • 大量資料排序會消耗 sort_buffer_size,適當調大可減少磁碟臨時表。
  • EXPLAIN 中出現 Using filesort 表示需外部排序,建議優化索引。

善用 ORDER BY 不僅能讓報表資料更易讀,更是分頁、Top-N 查詢的基石。實務上請根據業務需求選擇適當排序欄位與索引策略。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved