Rzeczywiste wykonanie instrukcji MySQL jest nieco trudne. Jednak norma określa kolejność interpretacji elementów w zapytaniu. Jest to zasadniczo w kolejności, którą określisz, chociaż myślę, że HAVING i GROUP BY może pojawić się po SELECT :
FROMklauzulaWHEREklauzulaSELECTklauzulaGROUP BYklauzulaHAVINGklauzulaORDER BYklauzula
Jest to ważne dla zrozumienia sposobu analizowania zapytań. Nie możesz użyć aliasu kolumny zdefiniowanego w SELECT w WHERE na przykład, ponieważ WHERE jest analizowany przed SELECT . Z drugiej strony taki alias może znajdować się w ORDER BY klauzula.
Jeśli chodzi o faktyczne wykonanie, to tak naprawdę zależy to od optymalizatora. Na przykład:
. . .
GROUP BY a, b, c
ORDER BY NULL
i
. . .
GROUP BY a, b, c
ORDER BY a, b, c
oba mają efekt ORDER BY w ogóle nie jest wykonywany -- a więc nie jest wykonywany po GROUP BY (w pierwszym przypadku efektem jest usunięcie sortowania z GROUP BY a w drugim efektem jest zrobienie niczego poza GROUP BY już to robi).