天天看點

mysql中sql語句執行順序

執行順序

一些問題解釋

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 之前别名不存在

繼續閱讀