SQL查询语句执行顺序

在大多数编程语言中,代码是按照编码顺序执行的,但是在SQL语言中,尽管SELECT语句第一个出现,但却不是第一个被执行的。

 

SQL查询语句内部执行顺序:

from子句—>where子句—>group by子句—>聚合函数—>having子句—>select 字段—>order by子句

 

每个执行步骤都会产生一个虚拟表,该虚拟表作为下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有在最后一步生成的表才会返回给调用者。

 

 

SQL查询语句的完整结构如下,执行顺序为括号内数字:


(8) SELECT
(9) DISTINCT <select_list>, 
(6) AGG_FUNC <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>


(7)
HAVING <having_condition>


(10)
ORDER BY <order_by_list>
(11) LIMIT 
<limit_number> OFFSET <offset_number>   注:如有子查询,先执行子查询。