在多个联接上按GROUP BY

时间:2019-06-19 21:16:07

标签: mysql sql database rdbms

我已经搜索了问题,但找不到有效的解决方案。

我有3个表格:用户,帖子,评论。

select u.id user
     , p.id post
     , c.id comm
  from USer u
  join Post p
    on u.id = p.user_id
  join Comments c
    on p.id = c.post_id;

这给了我一个包含三列的输出,该列将用户与他们拥有的帖子以及在每个帖子上收到的评论联系起来。

o / p就像:

user    post    comm
1    1    4
1    1    5
1    1    7
1    1    8
2    5    11
2    5    12
2    7    13

我想找到用户总数最多的用户。为此,GROUP BY用户无法正常工作。可以替代此任务吗?

1 个答案:

答案 0 :(得分:0)

您可以使用GROUP BYORDER BYLIMIT

select p.user_id, count(*) as num_comments
from Post p inner join
     Comments c
     on p.id = c.post_id
group by p.user_id
order by num_comments desc
limit 1;

请注意,因为只需要用户ID,所以不需要user表,因为user_idpost中。