我有一个查询,它会选择一堆“项目”以及客户为该项目给出的平均评分。它看起来像这样:
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。
答案 0 :(得分:1)
使用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
进行演示