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


對數據庫基本操作是每個程序員基本功,如何理解並快速記住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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM