【问题标题】:querying unique latest post by topic按主题查询唯一的最新帖子
【发布时间】:2013-08-22 00:23:01
【问题描述】:

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

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

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

这是一个快速的场景: 用户 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 FROM 主题、帖子、类别 WHERE topic_id = post_topic 和 topic_cat = cat_id ORDER BY post_date DESC

如果我添加 GROUP BY topic_subject 或其 id,我会得到原始主题创建者,例如:

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

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以添加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
    ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多