我正在尝试创建一个最近活跃的主题部分,但我遇到了查询问题。
我有三个表:帖子,主题,类别(从最小到最大)。 每个帖子都与一个主题相关联,每个主题都与一个类别相关联。
现在,问题是显示唯一发布的最新主题。
这是一个快速方案: 用户X在主题A中发布,然后在主题B中发布。用户Y在主题A中创建主题C和帖子。就在用户Y在A上发布之前,用户Z发布在主题A上。
在活动主题列表中,我想显示以下内容:
我当前的sql只是正确地抓取了序列,但也得到了相同的主题:
主题A - X的消息
SELECT topic_subject,post_date,post_msg,post_by,cat_color FROM主题,帖子,类别 WHERE topic_id = post_topic AND topic_cat = cat_id ORDER BY post_date DESC
如果我添加GROUP BY topic_subject或其ID,我会获得原始主题创建者,例如:
我需要一个子查询吗? 谢谢!
答案 0 :(得分:0)
您可以添加not exists
子查询:
select topic_subject, post_date, post_msg, post_by, cat_color
from topics, posts p, categories
where topic_id = post_topic AND topic_cat = cat_id
and not exists
(
select 1
from posts
where post_topic = p.post_topic and post_date > p.post_date
)