MySQL中函数的执行顺序

时间:2019-01-27 20:33:16

标签: mysql sql-execution-plan sql-function order-of-execution

我知道MySQL的执行顺序不是固定的。但是,我听说它通常是这样的:

  1. FROM,包括JOIN
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. DISTINCT
  7. ORDER BY
  8. LIMITOFFSET

但是,如果我运行例如COUNT()之类的函数(例如下面的代码),什么时候可以执行? MySQL如何确定将使用该函数计算的主题(例如 COUNT()函数要计算的内容)?我对AVG()SUM()MAX()等等功能的执行顺序目标指定感到困惑。在MySQL中。

SELECT productvendor, count(*)
FROM products
GROUP BY productvendor
HAVING count(*) >= 9;

1 个答案:

答案 0 :(得分:3)

您的顺序不正确
选择在GROUP BY

之前
FROM, including JOINs
WHERE
SELECT the row  obtained  by from and where in a temporary area for others 
        operation (and build the column alias)
DISTINCT
GROUP BY
HAVING
ORDER BY
LIMIT and OFFSET
return the final result 

使用选择列对临时结果进行计数和聚集功能。此操作产生的结果通过

进行过滤