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

标签 mysql sql having having-clause

我需要在 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 Manual :

It is not allowable to refer to a column alias in a WHERE clause, because the column value might not yet be determined when the WHERE clause is executed. See Section B.1.5.4, “Problems with Column Aliases”.

关于mysql - mysql 的 WHERE 子句中可以使用别名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58094940/

相关文章:

php - 在 html : returned data object empty 中显示来自 SQL 数据库的数据

MySQL Order By a number,最后一个空字符串(0's)

mysql - 使用 5 个表生成查询

mysql - 匹配连接 View 表中的所有值

php - PDO 更新 : Syntax error or access violation

php - php中的更新查询有什么问题

sql - sql中的分组问题

mysql - 每次出现的最大值的 SQL 总和

mysql - 计算满足查询的项目

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