ホームページ >データベース >mysql チュートリアル >HAVING 句で集計関数のエイリアスを使用すると、SQL Server で「無効な列名」エラーが発生するのはなぜですか?

HAVING 句で集計関数のエイリアスを使用すると、SQL Server で「無効な列名」エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 17:20:15260ブラウズ

Why Does SQL Server Produce an

HAVING 句での SQL Server エイリアスの制限

SQL Server では、HAVING 句で集計関数のエイリアスを使用すると、 「列名が無効です」エラー。この明らかな矛盾は、SQL クエリの実行フローに起因します。

HAVING 句は、グループ操作の後、選択プロセスの前に評価されます。そのため、HAVING 句が最初に実行されるとき、提供されたコード スニペットの「col7」などの集計関数に割り当てられたエイリアスは、サーバーによってまだ認識されていません。

クエリの実行順序は次のとおりです。

  1. FROM 句で指定されたテーブルを結合します。
  2. WHERE を使用して行をフィルタリングします。
  3. GROUP BY 句に基づいて行をグループ化します。
  4. HAVING 句の条件を満たさないグループを削除します。
  5. SELECT ステートメントの式を計算します。

したがって、HAVING 句の評価の時点では、サーバーは認識しません。有効な列名として「col7」。この制限により、HAVING 句でエイリアスを使用して集計関数を参照することができなくなります。

ただし、この評価は HAVING 句の後に行われるため、ORDER BY 句でエイリアスを使用することは可能です。

以上がHAVING 句で集計関数のエイリアスを使用すると、SQL Server で「無効な列名」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。