为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2019-06-25 14:59:05
您能在MySQL的WHERE子句中使用别名吗?我需要在WHERE子句中使用别名,但它一直告诉我,它是一个未知列。有什么办法可以绕过这个问题吗?我需要选择评级高于x的记录。评级计算为以下别名:sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

你可以用一个词条,它能,会,可以参见别名。

 HAVING avg_rating>5

但是在WHERE子句中,您需要重复表达式。

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

但!并不是所有的表达式都被允许使用-使用像SUM这样的聚合函数是行不通的,在这种情况下,您需要使用WHERING子句。

MySQL手册:

不允许引用WHERE子句中的列别名,因为在执行WHERE子句时可能尚未确定列值。看见第B.1.5.4节,“列别名问题”.


查看完整回答
反对 回复 2019-06-25
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

不知道这在MySQL中是否有效,但使用sqlserver,您也可以将其包装如下:

select * from (
  -- your original query
  select .. sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating 
  from ...) Foowhere Foo.avg_rating ...


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 2015 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信