好比有以下的sql查詢語句,其中的執行順序是什麼樣子的呢?sql
select * from help_topic as t join help_relation as r on t.help_topic_id = r.help_topic_id where t.help_topic_id < 200 having r.help_topic_id<150 order by t.help_topic_id asc;
簡單來講,上述語句是咱們所寫的SQL語句,這個是人理解的順序,固然對於初學者,這個順序是有點繞的,機器執行的順序和咱們手寫SQL的順序是不一致的!其執行順序以下:code
1. FROM <left_table> 2. ON <join_codition> 3. <join_type> JOIN <right_table> 4. WHERE <where_condition> 5. GROUP BY <group_by_list> 6. HAVING <HAVING_condition> 7. SELECT 8. DISTINCT <select_list> 9. ORDER BY <order_by_condition> 10. LIMIT <limit_number>
整體來講,MYSQL的查詢語句,能夠分爲三個部分: 整體來講,MYSQL的查詢語句,能夠分爲三個部分:blog
select * from help_topic as t join help_relation as r on t.help_topic_id = r.help_topic_id;
select * from help_topic as t join help_relation as r on t.help_topic_id = r.help_topic_id where t.help_topic_id < 200;
select * from help_topic as t join help_relation as r on t.help_topic_id = r.help_topic_id where t.help_topic_id < 200 having r.help_topic_id < 150 order by t.help_topic_id asc;
正如上述描述,SQL查詢就能夠分紅這麼三個步驟。形象的解釋以下圖所示: it