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
以外の何もしないことです。 すでにします)。