帖子的用户的关注者数量该如何编写 SQL 语句呢?

在一个社交媒体平台的数据库中,有帖子表(包含帖子 ID、用户 ID、帖子内容、发布时间、点赞数等字段)和用户关注表(包含关注者用户 ID、被关注者用户 ID)。我想找出在过去一周内发布的点赞数超过 1000 的热门帖子,以及发布这些帖子的用户的关注者数量,该如何编写 SQL 语句呢?

请先 登录 后评论

1 个回答

醉尘梦

SELECT 

    p.post_id,

    p.user_id,

    p.post_content,

    p.publish_time,

    p.likes,

    COUNT(DISTINCT f.followee_user_id) AS followers_count

FROM 

    posts p

LEFT JOIN 

    followers f ON p.user_id = f.user_id

WHERE 

    p.publish_time > NOW() - INTERVAL 7 DAY

    AND p.likes > 1000

GROUP BY 

    p.post_id

SELECT 子句指定了要选择的字段:帖子ID (p.post_id)、用户ID (p.user_id)、帖子内容 (p.post_content)、发布时间 (p.publish_time)、点赞数 (p.likes) 以及发布者的关注者数量 (followers_count)。 FROM posts p 指定了主表 posts 并给它起了一个别名 p。 LEFT JOIN followers f ON p.user_id = f.user_id 表示将 posts 表与 followers 表进行左连接,连接条件是发布帖子的用户ID等于关注表中的用户ID。 WHERE 子句限定了帖子的发布时间在过去7天内,并且点赞数超过1000。 NOW() - INTERVAL 7 DAY 计算出当前时间之前7天的时间点。 GROUP BY p.post_id 表示按照帖子ID进行分组,这样每个帖子只会被计算一次。 COUNT(DISTINCT f.followee_user_id) AS followers_count 计算每个发布者的关注者数量,使用 DISTINCT 确保计数的是不同的关注者。

请先 登录 后评论