首页 > 解决方案 > MySQL中函数的执行顺序

问题描述

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

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

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

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

标签: mysqlsql-execution-plansql-functionorder-of-execution

解决方案


您的顺序不正确
选择在 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 

计数和聚合函数是在选择列的临时结果上完成的。这个操作产生通过过滤的结果


推荐阅读