Vlastní provádění příkazů MySQL je trochu složitější. Norma však specifikuje pořadí interpretace prvků v dotazu. Toto je v podstatě v pořadí, které určíte, i když si myslím, že HAVING
a GROUP BY
může následovat po SELECT
:
FROM
doložkaWHERE
doložkaSELECT
doložkaGROUP BY
doložkaHAVING
doložkaORDER BY
doložka
To je důležité pro pochopení toho, jak jsou analyzovány dotazy. Nemůžete použít alias sloupce definovaný v SELECT
v WHERE
klauzule, například, protože WHERE
je analyzován před SELECT
. Na druhou stranu takový alias může být v ORDER BY
doložka.
Pokud jde o skutečné provedení, to je skutečně ponecháno na optimalizátoru. Například:
. . .
GROUP BY a, b, c
ORDER BY NULL
a
. . .
GROUP BY a, b, c
ORDER BY a, b, c
oba mají účinek ORDER BY
se vůbec nespustí -- a tak se nespustí po GROUP BY
(v prvním případě dojde k odstranění řazení z GROUP BY
a ve druhém je výsledkem nedělat nic víc než GROUP BY
už dělá).