SELECT u.uid,u.status,u.category,u.role, p.uname, p.photo, p.upos, p.city, p.state, p.country, p.services, p.slug,
(select avg(rating) from rating where uid=u.uid) as rating
FROM `hd-users` u
JOIN `profile` p ON p.uid=u.uid
WHERE u.status='1' AND u.role='C' AND rating >= 4
这是我的SQL查询我加入了三个表,在加入时我正在考虑第三个表的平均值。一切正常,但每当我尝试将平均评分值与数字I进行比较时,我会得到错误:未知列'评分'在' where子句'
答案 0 :(得分:1)
错误是因为这一行:
AND rating >= 4
这里,rating由一个聚合函数生成,你不能把where子句放在聚合列名上。
使用喜欢:
having rating >= 4
注意: WHERE在聚合之前过滤记录,HAVING在聚合之后起作用。
答案 1 :(得分:0)
它是p.rating
或u.rating
。你没有在这里指定你的评分:
WHERE u.status='1' AND u.role='C' AND rating >= 4 // rating here has no alias