我有一个表用户包含字段userID,年龄,性别,我有另一个表 name为click_info,包含字段(id,userID,clickID)click_info表中的enrty如下所示
id userID dubID
1 1 2
2 1 2
3 1 2
4 2 2
5 2 2
6 3 2
7 4 2
现在我想要点击dubID 2的所有用户的平均年龄,我正在使用以下查询
SELECT DISTINCT `dub_clickinfo`.`userID`, `users`.`age` AS `average`, `users`.*
FROM `dub_clickinfo` INNER JOIN `users` ON dub_clickinfo.userId = users.userID
WHERE (dubID=2)
上面的查询给出了不正确的平均值,它将包含重复的userID(就像它将包括userID 1三次,2次两次)。
请建议查询
提前致谢!!
答案 0 :(得分:0)
尝试一下,有一对多的关系,所以你需要使用左连接而不是内部,并对用户的id应用组函数
SELECT dub_clickinfo.userID, users.age AS average, users.* FROM dub_clickinfo
LEFT JOIN users ON dub_clickinfo.userId = users.userID WHERE (dubID=2)
GROUP BY users.userID
答案 1 :(得分:0)
试试这个
SELECT avg(age) FROM users WHERE userID in (select distinct userID from dub_clickinfo where dubID ='2')