[英]MySQL: Select rows with max column value and corresponded datetime grouped by another column
[英]MySQL select only rows with max datetime grouped by foreign
我正在实施一个论坛系统,并且有以下表格:
forums
: id
, title
, created_at
forum_topics
: id
, title
, forum_id
created_at
forum_replies
: id
, content
, forum_topic_id
created_at
我正在尝试获取所有论坛,但我也想添加最后创建的forum_reply。
我真的陷入了困境。 任何帮助请
例如:
我有3个论坛:
和这个主题(id,标题,forum_id):
最后,此回复(id,内容,forum_topic_id,created_at)
所以我的最终结果应如下所示:
(forums.id,forum.title,forum_topics.id,forum_topics.title,forum_replies.id,forum_replies.content,forum_replies.timestamp)
此过程有两个步骤-第一个步骤是确定最新帖子。 第二个是检索其余信息(例如主题标题和答复内容),这需要再次加入该结果集。
select *
from forums f
left join forum_topics ft
on f.id = ft.forum_id
left join forum_replies fp
on ft.id = fp.forum_topic_id
left join (
SELECT f.id, MAX(fp.created_at) created_at
FROM forums f
INNER JOIN forum_topics ft
ON f.id = ft.forum_id
INNER JOIN forum_replies fp
ON ft.id = fp.forum_topic_id
GROUP BY f.id
) q
on fp.created_at = q.created_at
and f.id = q.id
where fp.created_at = q.created_at
or fp.id is null;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.