ホームページ > データベース > mysql チュートリアル > MySQL の WHERE 句で列エイリアスを使用できますか?

MySQL の WHERE 句で列エイリアスを使用できますか?

Patricia Arquette
リリース: 2025-01-20 01:52:08
オリジナル
485 人が閲覧しました

Can I Use Column Aliases in MySQL's WHERE Clause?

MySQL の WHERE 句でエイリアスを使用する

MySQL では、派生カラムに一時的な名前を付けるためにエイリアスがよく使用されます。参照には便利ですが、WHERE 句で使用するとエラーが発生する可能性があります。

MySQL では、WHERE 句での列エイリアスの参照が制限されています。これは、WHERE 句の実行時に列の値がまだ決定されていない可能性があるためです。したがって、WHERE 句で別名を指定すると、「不明な列」エラーが発生します。

解決策

この制限を克服するには、いくつかの回避策があります:

  • HAVING 句: HAVING 句は、列の値がわかっている場合、WHERE 句の後のエイリアスにアクセスできます。たとえば、平均評価が 5 より大きいレコード (avg_rated として sum(reviews.rev_rated)/count(reviews.rev_id) として計算) を持つレコードを選択するには、次の HAVING 句を使用します:
<code class="language-sql">HAVING avg_rating > 5</code>
ログイン後にコピー
  • 式を繰り返します: あるいは、WHERE 句でエイリアス式を直接繰り返すこともできます。ただし、この方法は非集計関数でのみ機能します。たとえば、平均評価が 5 を超えるレコードを選択するには:
<code class="language-sql">WHERE (sum(reviews.rev_rating)/count(reviews.rev_id)) > 5</code>
ログイン後にコピー

制限事項

WHERE 句ではすべての式が許可されるわけではないことに注意してください。 SUM などの集計関数には HAVING 句が必要です。

MySQL マニュアルに記載されているとおり:

「WHERE 句の実行時に列の値が決定されていない可能性があるため、WHERE 句での列の別名への参照は許可されません。」

以上がMySQL の WHERE 句で列エイリアスを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート