现在标题可能有点令人困惑,很难用几个词来解释。
所以我有了主题和帖子表。两者都有一行"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