您能在MySQL的WHERE子句中使用别名吗?

您能在MySQL的WHERE子句中使用别名吗?

我需要在WHERE子句中使用别名,但它一直告诉我,它是一个未知列。有什么办法可以绕过这个问题吗?我需要选择评级高于x的记录。评级计算为以下别名:

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


慕妹3146593
浏览 2016回答 3
3回答

慕森卡

你可以用一个词条,它能,会,可以参见别名。 HAVING avg_rating>5但是在WHERE子句中,您需要重复表达式。 WHERE (sum(reviews.rev_rating)/count(reviews.rev_id))>5但!并不是所有的表达式都被允许使用-使用像SUM这样的聚合函数是行不通的,在这种情况下,您需要使用WHERING子句。从MySQL手册:不允许引用WHERE子句中的列别名,因为在执行WHERE子句时可能尚未确定列值。看见第B.1.5.4节,“列别名问题”.

慕田峪9158850

不知道这在MySQL中是否有效,但使用sqlserver,您也可以将其包装如下:select * from (   -- your original query   select .. sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating    from ...) Foowhere Foo.avg_rating ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL