執行順序
一些問題解釋
FROM 哪張表
先去尋找表
JOIN 連接配接方式
連接配接
ON 連接配接條件
連接配接條件
WHERE 分組前條件
篩出條件
GROUP BY 分組(開始允許使用 SELCT 中的别名)
進行分組
HAVING 對結果集做篩選
分組後的篩出條件
SELECT 選擇列
最終隻顯示選擇的列
DISTINCT 去重
去重
ORDER BY 排序
排序操作
LIMIT 限制行
限制多少行顯示
為什麼 where 後不能加聚合函數,但是 having 後可以加聚合函數?
答:通過 sql 語句中的執行順序我們可以知道答案,我們有知道聚合函數計算是依賴于結果集的,但是按照 mysql 語句的執行順序,ORDER BY 後才是結果集,是以隻能放在 HAVING 中
為什麼 where 後不能使用 select 中列的别名,但是 group by 後卻可以?
答:同樣是通過 sql 語句關鍵詞的執行順序我們知道,在 group by 之前别名不存在