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

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

WHERE 句でエイリアスを使用する必要がありますが、不明な列であると表示されます。この問題を回避する方法はありますか? 評価が x より高いレコードを選択する必要があります。評価は次のエイリアスとして計算されます。

sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating

ベストアンサー1

HAVING句を使うと、できるエイリアスを参照してください。例:

 HAVING avg_rating>5

しかし、where句では式を繰り返す必要があります。例:

 WHERE (sum(reviews.rev_rating)/count(reviews.rev_id))>5

ただし、すべての式が許可されるわけではありません。SUM などの集計関数は使用できません。その場合は、HAVING 句を使用する必要があります。

からMySQL マニュアル:

WHERE句の実行時に列の値がまだ決定されていない可能性があるため、WHERE句で列の別名を参照することはできません。セクション B.1.5.4「列エイリアスの問題」

おすすめ記事