现在标题可能有些混乱,很难用几句话来解释。
因此,我有表格“主题和帖子”。两者都有“已发布”行,代表该线程/帖子的发布时间。我需要做的是比较它们,然后选择一个条目,而该条目是最新的条目。
我可以证明我的意思。我现在喜欢这样
$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