按主题查询唯一的最新帖子

时间:2013-08-20 04:02:59

标签: mysql

我正在尝试创建一个最近活跃的主题部分,但我遇到了查询问题。

我有三个表:帖子,主题,类别(从最小到最大)。 每个帖子都与一个主题相关联,每个主题都与一个类别相关联。

现在,问题是显示唯一发布的最新主题。

这是一个快速方案: 用户X在主题A中发布,然后在主题B中发布。用户Y在主题A中创建主题C和帖子。就在用户Y在A上发布之前,用户Z发布在主题A上。

在活动主题列表中,我想显示以下内容:

  • 主题A - Y的消息
  • 主题C - Y的消息
  • 主题B - X的消息

我当前的sql只是正确地抓取了序列,但也得到了相同的主题:

  • 主题A - Y的消息
  • 主题A - Z的消息
  • 主题C - Y的消息
  • 主题B - X的消息
  • 主题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,我会获得原始主题创建者,例如:

  • 主题C - Y的消息
  • 主题B - X的消息
  • 主题A - X的消息

我需要一个子查询吗? 谢谢!

1 个答案:

答案 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
)