HAVING 句でのエイリアス使用の制限について
SQL では、HAVING 句内の集計にエイリアスを使用するのが直感的に思えるかもしれません。ただし、この方法では、SQL クエリの特定の評価順序により、「列名が無効です」というエラーが発生します。
この制限を理解するには、SQL がどのようにクエリを実行するかを理解することが重要です。
したがって、HAVING 句は SELECT 句よりも前に評価されるため、SELECT ステートメント内の集計に割り当てられるエイリアスは(例: "col7") は、SQL が HAVING 式を評価するときにまだ認識されていません。その結果、「列名 'col7' が無効です」というエラーが発生します。
対照的に、ORDER BY 句は SELECT ステートメントの後に評価されるため、SELECT 句で定義されたエイリアスを使用できます。これは、ORDER BY 句が SELECT ステートメントによって作成された結果セットを操作するためです。
この問題を解決するには、次に示すように、HAVING 句のエイリアスを実際の集計式に置き換えます。
select col1,count(col2) from --some join operation group by col1 having count(col2) >= 3
以上がSQL の HAVING 句でエイリアスを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。