在MySQL中执行子句的预定义顺序是什么?它是否在运行时确定,并且此顺序正确吗?
FROM clause WHERE clause GROUP BY clause HAVING clause SELECT clause ORDER BY clause
MySQL语句的实际执行有些棘手。但是,该标准确实指定了查询中元素解释的顺序。这基本上是在您指定的顺序,但我想HAVING和GROUP BY能来后SELECT:
FROM 条款 WHERE 条款 SELECT 条款 GROUP BY 条款 HAVING 条款 ORDER BY 条款 这对于了解如何解析查询很重要。例如,您不能使用SELECT在WHERE子句中的定义的列别名,因为会在WHERE之前解析SELECT。另一方面,这样的别名可以在ORDER BY子句中。
至于实际执行,这实际上取决于优化程序。例如:
. . . GROUP BY a, b, c ORDER BY NULL 和
. . . GROUP BY a, b, c ORDER BY a, b, c 两者都具有ORDER BY根本不执行的效果-因此不会在之后执行GROUP BY(在第一种情况下,效果是从中删除排序GROUP BY,在第二种情况中,效果仅是GROUP BY已经执行了)。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。