mysql如何查询ROUND(AVG(`row`))等于

mysql如何查询ROUND(AVG(`row`))等于,mysql,sql,aggregate-functions,Mysql,Sql,Aggregate Functions,我有一个查询,它选择了一堆“项目”和客户对该项目的平均评分。看起来是这样的: SELECT `items`.`itemid`, `items`.`name`, `items`.`address`, `items`.`suburb`, `items`.`latitude`, `items`.`longitude`, `reviews`.`comment`, Round(Avg(`reviews`.`r

我有一个查询,它选择了一堆“项目”和客户对该项目的平均评分。看起来是这样的:

SELECT `items`.`itemid`,
       `items`.`name`,
       `items`.`address`,
       `items`.`suburb`,
       `items`.`latitude`,
       `items`.`longitude`,
       `reviews`.`comment`,
       Round(Avg(`reviews`.`rating`), 0) AS avg
FROM   `items`
       RIGHT JOIN `reviews`
               ON `items`.`itemid` = `reviews`.`itemid`
GROUP  BY `items`.`itemid`; 
现在,这是可行的,我得到了关于一个项目及其平均评分的所有信息

我想要的是添加一个

WHERE avg ='3';
其中3是一个选定值,因此我可以搜索“平均评分为3的所有项目”等


其中avg='3'不起作用。我只是想知道有没有办法?使用PHP偶数。

使用having子句从聚合函数中筛选结果

SELECT `items`.`itemid`,
       `items`.`name`,
       `items`.`address`,
       `items`.`suburb`,
       `items`.`latitude`,
       `items`.`longitude`,
       `reviews`.`comment`,
       Round(Avg(`reviews`.`rating`), 0) AS avg
FROM   `items`
       RIGHT JOIN `reviews` using (`itemid`)
GROUP  BY `reviews`.`itemid`
HAVING Round(Avg(`reviews`.`rating`), 0) = 3

演示使用

这可能是正确的,但它返回“表单中缺少值!”这似乎是您提交的值的问题,我想问一个新问题,我通过添加“;”来修复它,最后,它在“HAVING Round(Avg(
reviews
rating),0)=3”时抛出语法错误,在分组后删除分号;也修改了join子句
使avg=3就足够了,无需重新计算