你可以使用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节"列别名的问题".
Dunno如果这在mysql中运行但是使用sqlserver你也可以像下面这样包装:
select * from ( -- your original query select .. sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating from ...) Foo where Foo.avg_rating ...