MySQLステートメントの実際の実行は少し注意が必要です。ただし、標準では、クエリ内の要素の解釈の順序が指定されています。 HAVINGだと思いますが、これは基本的に指定した順序です。 およびGROUP BY SELECTの後に来る可能性があります :
-
FROM条項 WHERE条項-
SELECT条項 -
GROUP BY条項 -
HAVING条項 -
ORDER BY条項
これは、クエリがどのように解析されるかを理解するために重要です。 SELECTで定義された列エイリアスは使用できません WHEREで たとえば、WHEREのための句 SELECTの前に解析されます 。一方、このようなエイリアスはORDER BYに含めることができます 条項。
実際の実行に関しては、それは実際にはオプティマイザーに任されています。例:
. . .
GROUP BY a, b, c
ORDER BY NULL
および
. . .
GROUP BY a, b, c
ORDER BY a, b, c
どちらもORDER BYの効果があります まったく実行されない-したがって、GROUP BYの後に実行されない (最初のケースでは、効果はGROUP BYから並べ替えを削除することです 2番目の効果は、GROUP BY以外の何もしないことです。 すでにします)。