帖子的用戶的關注者數量該如何編寫 SQL 語句呢?

在一個社交媒體平臺的數據庫中,有帖子表(包含帖子 ID、用戶 ID、帖子內容、發(fā)布時間、點贊數等字段)和用戶關注表(包含關注者用戶 ID、被關注者用戶 ID)。我想找出在過去一周內發(fā)布的點贊數超過 1000 的熱門帖子,以及發(fā)布這些帖子的用戶的關注者數量,該如何編寫 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)、發(fā)布時間 (p.publish_time)、點贊數 (p.likes) 以及發(fā)布者的關注者數量 (followers_count)。 FROM posts p 指定了主表 posts 并給它起了一個別名 p。 LEFT JOIN followers f ON p.user_id = f.user_id 表示將 posts 表與 followers 表進行左連接,連接條件是發(fā)布帖子的用戶ID等于關注表中的用戶ID。 WHERE 子句限定了帖子的發(fā)布時間在過去7天內,并且點贊數超過1000。 NOW() - INTERVAL 7 DAY 計算出當前時間之前7天的時間點。 GROUP BY p.post_id 表示按照帖子ID進行分組,這樣每個帖子只會被計算一次。 COUNT(DISTINCT f.followee_user_id) AS followers_count 計算每個發(fā)布者的關注者數量,使用 DISTINCT 確保計數的是不同的關注者。

請先 登錄 后評論