我需要在WHERE子句中使用别名,但它一直告诉我它的未知列。有什么办法可以解决这个问题?我需要选择评级高于x的记录。评分的计算方法如下:
sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating
您可以使用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节“列别名问题”。