现在标题可能有些混乱,很难用几句话来解释。

因此,我有表格“主题和帖子”。两者都有“已发布”行,代表该线程/帖子的发布时间。我需要做的是比较它们,然后选择一个条目,而该条目是最新的条目。

我可以证明我的意思。我现在喜欢这样

$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

10-04 11:20