【问题标题】:MYSQL: How to count and group from 2 tables and then join to the 3rd tableMYSQL:如何从 2 个表中计数和分组,然后加入到第 3 个表
【发布时间】:2019-12-17 18:54:06
【问题描述】:

有人可以帮帮我吗? 我想从不超过一周的 2 个表(cmets_table 和 comment_replies)中计算所有出现的“用户名”字段。得到结果后,我现在想从“users”表中获取每个用户名的“profile_image”。

cmets_table 如下所示

下面是comment_replies 表

comment_replies 如下所示:

通过编写这个查询,我已经完成了 80% 的工作:

    SELECT username, COUNT(*) AS total
FROM (
    SELECT username FROM comments_table WHERE date_time > NOW() - INTERVAL 1 WEEK
    UNION ALL
    SELECT username FROM comment_replies WHERE date_time > NOW() - INTERVAL 1 WEEK
) table1 
GROUP BY username ORDER BY total DESC

通过给出以下输出,它运行得非常好:

这是我的问题:我想将此结果加入“用户”表,以便我可以获得每个用户名的“profile_image”。 “用户”表将用户名列作为唯一列:

我知道我可以使用用户名列加入,但我只是卡住了。请帮忙。 我在 Stock Overflow 上进行了搜索,发现 thisthis 但他们没有解决我的情况。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您只需要将用户表与您的查询连接起来:

    SELECT u.username,u.profile_image,t.total
    FROM `users` u
    INNER JOIN (
      SELECT username, COUNT(*) AS total
      FROM (
        SELECT username FROM comments_table WHERE date_time > NOW() - INTERVAL 1 WEEK
        UNION ALL
        SELECT username FROM comment_replies WHERE date_time > NOW() - INTERVAL 1 WEEK
      ) table1 
      GROUP BY username) t
    ON u.username=t.username
    ORDER BY t.total;
    

    我更正了关键字 INNER 的拼写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2011-02-01
      • 2012-04-11
      • 1970-01-01
      • 2015-07-17
      • 2020-06-08
      相关资源
      最近更新 更多