一條sql語句搞定基於mysql的sql執行順序的基本理解

https://www.cnblogs.com/Steven0805/p/6553538.html
原作者:Steven_Jiang

對數據庫基本操作是每個程序員基本功,如何理解並快速記住sql執行的順序呢,其實一條複雜的sql就能搞定:
SELECT DISTINCT <select_list>
FROM <left_table>
<join_type> JOIN <right_table>
ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
執行順序:
(7) SELECT
(8) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number>
另外需要注意的問題:

(1)group by 存在時,select中除了聚集函數外,所有的基本列必須是group by裏面存在的;having基本上同group by一起使用的,having類似於where語句,只是having過濾是基於group by 分組後的數據,having一般通過select語句裏面的聚集函數進行過濾。

參考:

http://www.cnblogs.com/Qian123/p/5666569.html
http://www.cnblogs.com/Qian123/p/5669259.html#_label10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章