MySQL语句的实际执行有些棘手。但是,该标准确实指定了查询中元素解释的顺序。这基本上是在您指定的顺序,但我想
HAVINg和
GROUPBY能来后
SELECt:
FROM
条款WHERe
条款SELECT
条款GROUP BY
条款HAVINg
条款ORDER BY
条款
这对于了解如何解析查询很重要。例如,您不能使用
SELECT在
WHERe子句中的定义的列别名,因为会在
WHERe之前解析
SELECT。另一方面,这样的别名可以在
ORDERBY子句中。
至于实际执行,这实际上取决于优化程序。例如:
. . .GROUP BY a, b, cORDER BY NULL
和
. . .GROUP BY a, b, cORDER BY a, b, c
两者都具有
ORDER BY根本不执行的效果-因此不会在之后执行
GROUP BY(在第一种情况下,效果是从中删除排序
GROUPBY,在第二种情况中,效果仅是
GROUP BY已经执行了)。



