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「列エイリアスの問題」。