为了消除尽可能多的嵌套查询,我正在尝试优化以下查询:
SELECT fp.id,
fp.user_id,
COUNT(c.id) AS num_replies,
c2.created AS latest_activity_time, c2.user_id AS latest_activity_user_id
FROM forum_posts fp
LEFT JOIN comments c ON c.object_id = fp.id
LEFT JOIN (SELECT created, user_id
FROM comments
ORDER BY created DESC
LIMIT 1) AS c2 ON fp.id = c2.object_id
WHERE fp.deleted != 1
GROUP BY fp.id
抱歉,如果您发现任何错误...我尝试将此查询缩减为仅相关部分,我可能在此过程中的某个地方犯了错误
所以基本上,我们这里有一个论坛帖子表和一个对这些帖子的评论回复表。每个论坛帖子可以有多个回复。第一个join用于统计回复总数,第二个join用于获取最新回复的信息。我从这个查询中得到的是这样的:
所以,我基本上是想弄清楚如何在不必求助于这个嵌套查询的情况下做到这一点。你们可以提供的任何帮助都将非常有用。
谢谢!
编辑:我已经稍微调整了查询,以反映我不仅需要撤回latest_activity_time
,而且还需要撤回latest_activity_user_id
. 对困惑感到抱歉!