Selve udførelsen af MySQL-sætninger er lidt vanskelig. Standarden specificerer dog rækkefølgen af fortolkning af elementer i forespørgslen. Dette er dybest set i den rækkefølge, du angiver, selvom jeg tror HAVING
og GROUP BY
kunne komme efter SELECT
:
FROM
klausulWHERE
klausulSELECT
klausulGROUP BY
klausulHAVING
klausulORDER BY
klausul
Dette er vigtigt for at forstå, hvordan forespørgsler parses. Du kan ikke bruge et kolonnealias defineret i en SELECT
i WHERE
klausul, for eksempel fordi WHERE
er parset før SELECT
. På den anden side kan et sådant alias være i ORDER BY
klausul.
Hvad angår den faktiske udførelse, er det virkelig overladt til optimeringsværktøjet. For eksempel:
. . .
GROUP BY a, b, c
ORDER BY NULL
og
. . .
GROUP BY a, b, c
ORDER BY a, b, c
begge har virkningen af ORDER BY
bliver slet ikke eksekveret -- og derfor ikke udført efter GROUP BY
(i det første tilfælde er effekten at fjerne sortering fra GROUP BY
og i den anden er effekten ikke at gøre mere end GROUP BY
allerede gør).