gpt4 book ai didi

MySQL 查询/子句执行顺序

转载 作者:IT老高 更新时间:2023-10-28 23:41:46 25 4
gpt4 key购买 nike

在 MySQL 中执行子句的预定义顺序是什么?其中一些是在运行时决定的,这个顺序是否正确?

  • FROM 子句
  • WHERE 子句
  • GROUP BY 子句
  • HAVING 子句
  • SELECT 子句
  • ORDER BY 子句

最佳答案

MySQL 语句的实际执行有点棘手。但是,该标准确实指定了查询中元素的解释顺序。这基本上按照您指定的顺序,尽管我认为 HAVINGGROUP BY 可能在 SELECT 之后:

  • FROM 子句
  • WHERE子句
  • SELECT子句
  • GROUP BY子句
  • HAVING子句
  • ORDER BY 子句

这对于理解查询的解析方式很重要。例如,您不能在 WHERE 子句中使用在 SELECT 中定义的列别名,因为 WHERESELECT 之前被解析。另一方面,这样的别名可以在 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 已经做了什么)。

关于MySQL 查询/子句执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com