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)、帖子內(nèi)容 (p.post_content)、發(fā)布時(shí)間 (p.publish_time)、點(diǎn)贊數(shù) (p.likes) 以及發(fā)布者的關(guān)注者數(shù)量 (followers_count)。 FROM posts p 指定了主表 posts 并給它起了一個(gè)別名 p。 LEFT JOIN followers f ON p.user_id = f.user_id 表示將 posts 表與 followers 表進(jìn)行左連接,連接條件是發(fā)布帖子的用戶ID等于關(guān)注表中的用戶ID。 WHERE 子句限定了帖子的發(fā)布時(shí)間在過去7天內(nèi),并且點(diǎn)贊數(shù)超過1000。 NOW() - INTERVAL 7 DAY 計(jì)算出當(dāng)前時(shí)間之前7天的時(shí)間點(diǎn)。 GROUP BY p.post_id 表示按照帖子ID進(jìn)行分組,這樣每個(gè)帖子只會(huì)被計(jì)算一次。 COUNT(DISTINCT f.followee_user_id) AS followers_count 計(jì)算每個(gè)發(fā)布者的關(guān)注者數(shù)量,使用 DISTINCT 確保計(jì)數(shù)的是不同的關(guān)注者。