Eksekusi sebenarnya dari pernyataan MySQL agak rumit. Namun, standar tidak menentukan urutan interpretasi elemen dalam kueri. Ini pada dasarnya dalam urutan yang Anda tentukan, meskipun menurut saya HAVING dan GROUP BY bisa muncul setelah SELECT :
FROMklausaWHEREklausaSELECTklausaGROUP BYklausaHAVINGklausaORDER BYklausa
Ini penting untuk memahami bagaimana kueri diuraikan. Anda tidak dapat menggunakan alias kolom yang ditentukan dalam SELECT di WHERE klausa, misalnya, karena WHERE diuraikan sebelum SELECT . Di sisi lain, alias seperti itu dapat berada di ORDER BY klausa.
Adapun eksekusi aktual, itu benar-benar diserahkan kepada pengoptimal. Misalnya:
. . .
GROUP BY a, b, c
ORDER BY NULL
dan
. . .
GROUP BY a, b, c
ORDER BY a, b, c
keduanya memiliki efek ORDER BY tidak dieksekusi sama sekali -- jadi tidak dieksekusi setelah GROUP BY (dalam kasus pertama, efeknya adalah menghapus pengurutan dari GROUP BY dan yang kedua efeknya tidak lebih dari GROUP BY sudah melakukannya).