我有一个多年前建立的老论坛,现在我变成了网站上的只读部分。尽管数据库设计很糟糕,但作为编程方面的练习,我试图减少使用的代码量。

我要达到的目的是在答复页面上:一个查询来显示第一个帖子(愚蠢地存储在“主题”表中),然后显示“答复”表中的其余帖子。

删节表:

'replies'
topicID
posted_by
body
date_posted

'topics'
topicID
subject
body
posted_by
date_posted


我要获取的表格是:

来自“主题”的初始帖子,然后是按date_posted排序的回复(最早的)。

这是我一直在困扰的查询:

SELECT DISTINCT
r.body, r.posted_by, r.date_posted, t.body, t.date_posted, t.posted_by, t.subject
FROM
replies r
LEFT JOIN topics t
    ON r.topicID = t.topicID
WHERE
r.topicID = 2372
ORDER BY
t.posted_by DESC,
r.date_posted DESC


有没有人对如何进行调整以获得我想要的方案有任何想法?

最佳答案

UNION查询应提供您要查找的数据:

SELECT topicID, subject, body, posted_by, date_posted
FROM topics
WHERE topicID = 2372
UNION
SELECT r.topicID, t.subject, r.body, r.posted_by, r.date_posted
FROM replies r
    INNER JOIN topics t ON r.topicID = t.topicID
WHERE t.topicID = 2372
ORDER BY r.date_posted DESC;

关于mysql - MYSQL JOIN查询结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21580114/

10-12 18:40