0

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

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

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

这是一个快速场景:用户 X 在主题 A 中发帖,然后在主题 B 中发帖。用户 Y 创建主题 C 并在主题 A 中发帖。就在用户 Y 在 A 上发帖之前,用户 Z 在主题 A 上发帖。

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

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

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

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

    从主题、帖子、类别中选择 topic_subject、post_date、post_msg、post_by、cat_color,其中 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 的消息

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

4

1 回答 1

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
) 
于 2013-08-20T04:24:59.137 回答