可以在mysql的WHERE子句中使用别名吗?

我需要在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节“列别名问题”。

以上是 可以在mysql的WHERE子句中使用别名吗? 的全部内容, 来源链接: utcz.com/qa/410749.html

回到顶部