mySQL 在新创建的列上使用 where

mySQL using where on newly created column

所以,我认为这很简单,但我搞砸了。

我有疑问

SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type

产生这个:

Price | food_type |
2.25 | Drink     |
1.50 | Candy     |
3    | Soup      |

我正在尝试 return 所有超过 2 美元的价格

所以我想要:

Price | food_type |
2.25 | Drink     |
3    | Soup      |

看来应该就这么简单

SELECT AVG(price), food_type
FROM instructor
WHERE AVG(price) > 2
GROUP BY food_type

但我无法让它工作。

我做错了什么?

您不能在 where 子句中使用聚合函数。相反,您需要 having:

SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type
HAVING AVG(price) > 2

在MySQL中,你也可以在HAVING子句中引用别名(这是对标准SQL的扩展):

SELECT AVG(price) avg_price, food_type
FROM instructor
GROUP BY food_type
HAVING avg_price > 2