sql >> データベース >  >> RDS >> Mysql

MySQLクエリ/句の実行順序

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



    1. ポーカー、ブラックジャック、ベロット、プレフェレンスはデータベースと何の関係がありますか?

    2. SQL-COALESCEとISNULLの違いは?

    3. MariaDBでのUPDATEXML()のしくみ

    4. PHPとPDOを使用して単一のMySQLプリペアドステートメントに配列を挿入する方法