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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-20 02:09:09544ブラウズ

Can I Use Aliases in MySQL's WHERE Clause?

MySQL WHERE 句: エイリアスの制限

MySQL では、可読性を向上させるために列のエイリアスを使用したり、クエリ内で新しい式を作成したりできます。 ただし、WHERE 句内でエイリアスを直接使用すると、多くの場合「不明な列」エラーが発生します。これは、WHERE 句がエイリアスが割り当てられるの行をフィルタリングするためです。

回避策:

解決策の 1 つは、HAVING 句の使用です。 WHERE とは異なり、HAVING はグループ化と集計の を操作し、クエリ内で作成されたエイリアスへの参照を許可します。

<code class="language-sql">SELECT *, AVG(rev_rating) AS avg_rating
FROM reviews
GROUP BY rev_id
HAVING avg_rating > 5;</code>

ここでは、avg_ratingHAVING 内で正しく参照されています。

WHERE 句で同様のフィルタリングを実現するには、エイリアスを完全な式で置き換える必要があります。

<code class="language-sql">SELECT *
FROM reviews
WHERE (SUM(reviews.rev_rating) / COUNT(reviews.rev_id)) > 5;</code>

重要な考慮事項:

WHERE 句は、すべての式、特にエイリアス内で使用される SUM()AVG() などの集計関数をサポートしているわけではありません。 このような場合、HAVING は必須です。

MySQL ドキュメントで説明されているように、WHERE 句の実行時に値が計算されない可能性があるため、WHERE での列エイリアスの参照は許可されません。

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

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