开发者社区> 问答> 正文

MySQL查询/子句执行顺序

在MySQL中执行子句的预定义顺序是什么?它是否在运行时确定,并且此顺序正确吗?

FROM clause WHERE clause GROUP BY clause HAVING clause SELECT clause ORDER BY clause

展开
收起
保持可爱mmm 2020-05-10 20:57:08 439 0
1 条回答
写回答
取消 提交回答
  • 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

    2020-05-10 20:57:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像