在MySQL開發中,ORDER BY與GROUP BY是兩個極易混淆但用途截然不同的子句。本文從語法語義、使用場景、聚合函數配合等維度,為你釐清兩者的本質區別。
| 子句 | 英文語義 | 核心功能 | 必要條件 |
|---|---|---|---|
| ORDER BY | 排序方式 | 對結果集行進行排序(預設升序ASC) | 需指定排序欄位,可多欄位 |
| GROUP BY | 分組 | 將資料按指定欄位分類匯總 | 需至少一個分組標識欄位,必須配合聚合函數使用 |
聚合函數對一組值進行計算並返回單一值,常見包括:
SUM():求和COUNT():計數AVG():平均值MAX()/MIN():極值使用GROUP BY的目的正是「分類匯總」——例如:按部門統計平均薪資、按日期計算每日訂單量。
SELECT category, COUNT(*) FROM articles GROUP BY categorySELECT user_id, SUM(amount) FROM orders GROUP BY user_idGROUP BY dept HAVING AVG(salary) > 5000ORDER BY不改變行數,GROUP BY會壓縮行數。ORDER BY。掌握兩者差異,能讓你寫出語義精準、效能優異的SQL語句。