初考-統計資料處理大意115 年第 42 題單選題
SQL 語法中,當一個查詢同時有 WHERE、GROUP BY、HAVING、ORDER BY,其邏輯執行順序為下列何者?
AWHERE→GROUP BY→HAVING→ORDER BY正確答案
BWHERE→ORDER BY→GROUP BY→HAVING
CGROUP BY→WHERE→HAVING→ORDER BY
DGROUP BY→ORDER BY→WHERE→HAVING
A正確答案
SQL 執行順序:先篩列 (WHERE)→再分組 (GROUP BY)→再篩組 (HAVING)→最後排序 (ORDER BY)。
為什麼答案是 A
正確順序。先用 WHERE 過濾原始資料列,再用 GROUP BY 分組,HAVING 過濾分組結果,最後 ORDER BY 排序輸出。
載入中…
完整詳解
Pro · 無限重點 SQL 執行順序:先篩列 (WHERE)→再分組 (GROUP BY)→再篩組 (HAVING)→最後排序 (ORDER BY)。
口訣:『先過濾、後分組、再篩組、最排序』。WHERE 對原始列,HAVING 對分組後。
逐選項分析
A✓ 正確
正確順序。先用 WHERE 過濾原始資料列,再用 GROUP BY 分組,HAVING 過濾分組結果,最後 ORDER BY 排序輸出。
B✕
ORDER BY 絕對是最後一步,不可能排在 GROUP BY 之前,否則無法對聚合後結果排序。
C✕ 陷阱
陷阱!GROUP BY 不可能在 WHERE 之前。WHERE 的目的就是先濾掉不必要的列,減少分組負擔。
D✕
完全顛倒。ORDER BY 不可能在 WHERE、HAVING 之前,且 GROUP BY 必須在 HAVING 之前(因 HAVING 是過濾分組)。
SQL 六大子句邏輯執行順序
| 順序 | 子句 | 作用 | 對象 |
|---|
| 1 | FROM | 選擇資料表 | 資料表 |
| 2 | WHERE | 過濾列 | 原始資料列 |
| 3 | GROUP BY | 分組 | 過濾後的列 |
| 4 | HAVING | 過濾組 | 分組後的群組 |
| 5 | SELECT | 選擇欄位 | 分組結果 |
| 6 | ORDER BY | 排序輸出 | 最終結果集 |
最容易錯的是把 GROUP BY 放在 WHERE 前面 (選項 C)。記住:先有『過濾後的資料』才能分組,先有『分組』才能用 HAVING 篩組,最後才 ORDER BY 排序輸出。