Порядок выполнения функций в MySQL - PullRequest
0 голосов
/ 27 января 2019

Мне известно, что порядок выполнения MySQL не фиксирован.Но я слышал, что обычно это выглядит так:

  1. FROM, включая JOIN s
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. DISTINCT
  7. ORDER BY
  8. LIMIT и OFFSET

Однако, если я запускаю такие функции, как, например, COUNT() (как в приведенном ниже коде), когда он будет выполнен?и как MySQL определяет темы, которые будут рассчитываться с помощью функции ( например Что считать для функции COUNT())?Меня смущает порядок выполнения и целевое обозначение таких функций, как AVG(), SUM(), MAX(), и т. Д. в MySQL.

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

1 Ответ

0 голосов
/ 27 января 2019

Ваша последовательность неверна
выбор сделан до 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 

подсчет и функция агрегации выполняются для временного результата со столбцом выбора. Эта операция производит результат, отфильтрованный поимея

...