从两个表中选择最新条目


Select the latest entry from two tables?

现在标题可能有点令人困惑,很难用几个词来解释。

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

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

$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");

有人知道我是怎么做到的吗?

您可以简单地将表的同质化版本联合在一起,然后按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