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

本教程将介绍你可以在mysql的WHERE子句中使用别名吗?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

你可以在mysql的WHERE子句中使用别名吗? 教程 第1张

问题描述

我需要在 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子句中使用别名吗?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。