从两个表中选择最新的条目?

时间:2015-04-10 02:45:56

标签: php mysql pdo

现在标题可能有点令人困惑,只用几句话就难以解释。

所以我有表主题和帖子。两者都有“已发布”行,表示帖子/帖子发布的时间。我需要做的是比较这些并只选择一个条目,该条目是最新条目。

我可以证明我的意思。我现在已经喜欢这个了。

$postsQ = $DB->query("SELECT t.posted, p.userid, p.topicid, t.id FROM posts p, topics t WHERE t.forumid = '$ForumSub[id]' AND t.id = p.topicid ORDER BY t.posted DESC LIMIT 1,1");

不是我所知道的最好的代码。

我知道这不起作用,但为了表明我想要的想法,这里是查询的外观

$postsQ = $DB->query("SELECT (p.posted AND t.posted) AS tpposted, p.userid, p.topicid, t.id FROM posts p, topics t WHERE t.forumid = '$ForumSub[id]' AND t.id = p.topicid ORDER BY tpposted DESC LIMIT 1,1");

任何人都知道如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以简单地将表的同质化版本组合在一起,然后按posted的降序对它们进行排序并限制结果。试试这个:

select *
  from
    (
      select id, posted, userid, 'post'
        from posts
      union
        select id, posted, userid, 'topic'
          from topics
    ) q
  order by posted desc limit 1;

这里有一个示范小提琴:http://sqlfiddle.com/#!9/b46c2/1