SQL select语句的不同部分的执行顺序是什么?

时间:2010-04-11 16:10:30

标签: sql

SQL select语句的不同部分的执行顺序是什么?如
不同

按订单 分组由 有
多线功能(计数,平均值,最大值,最小值...)
top(sql server)或limit(mysql)
其他部分

不同的数据库是否具有相同的执行顺序? 非常感谢。

3 个答案:

答案 0 :(得分:15)

看看

SQL SERVER – Logical Query Processing Phases – Order of Statement Execution

  
      
  1. FROM
  2.   
  3. ON
  4.   
  5. OUTER
  6.   
  7. WHERE
  8.   
  9. GROUP BY
  10.   
  11. CUBE | ROLLUP
  12.   
  13. HAVING
  14.   
  15. 选择
  16.   
  17. DISTINCT
  18.   
  19. ORDER BY
  20.   
  21. TOP
  22.   

此外,有关一些好消息,请参阅Logical Query Processing

答案 1 :(得分:2)

上述答案解决了这个问题,但上述命令有一个例外

当你有

选择top n ............

排序

然后,order by将在select之前执行。 (首先排序条目,然后选择前n个条目)

答案 2 :(得分:0)

访问 https://msdn.microsoft.com/en-us/library/ms189499.aspx以获得更好的解释。

以下步骤显示SELECT语句的逻辑处理顺序或绑定顺序。此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句。例如,如果查询处理器可以绑定(访问)FROM子句中定义的表或视图,则这些对象及其列可供所有后续步骤使用。相反,因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列。但是,它们可以由后续子句引用,例如ORDER BY子句。请注意,语句的实际物理执行由查询处理器确定,并且顺序可能与此列表不同。

JOIN

WHERE

GROUP BY

WITH CUBE或WITH ROLLUP

HAVING

选择

DISTINCT

ORDER BY

TOP