SQL select语句的不同部分的执行顺序是什么?如
不同
从
按订单
分组由
有
多线功能(计数,平均值,最大值,最小值...)
top(sql server)或limit(mysql)
其他部分
不同的数据库是否具有相同的执行顺序?
非常感谢。
答案 0 :(得分:15)
看看
SQL SERVER – Logical Query Processing Phases – Order of Statement Execution
- FROM
- ON
- OUTER
- WHERE
- GROUP BY
- CUBE | ROLLUP
- HAVING
- 选择
- DISTINCT
- ORDER BY
- TOP
醇>
此外,有关一些好消息,请参阅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