现在标题可能有点令人困惑,只用几句话就难以解释。
所以我有表主题和帖子。两者都有“已发布”行,表示帖子/帖子发布的时间。我需要做的是比较这些并只选择一个条目,该条目是最新条目。
我可以证明我的意思。我现在已经喜欢这个了。
$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");
任何人都知道如何实现这一目标?
答案 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