根据mysql中的不同行获取平均值

时间:2013-11-08 09:43:21

标签: mysql sql

我有一个表用户包含字段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次两次)。

请建议查询

提前致谢!!

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')