1

我有一个包含字段 userID、age、gender 的表 users 并且我有另一个表名为 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)

上面的查询给出了不正确的平均值,它将包括重复的用户 ID(就像它会包括用户 ID 1 三次,2 两次)。

请提出查询

提前致谢 !!

4

2 回答 2

0

尝试这个

SELECT avg(age) FROM users WHERE userID in (select distinct userID from dub_clickinfo where dubID ='2')
于 2013-11-08T10:05:44.507 回答
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
于 2013-11-08T09:47:07.480 回答