我有一个多年前建立的老论坛,现在我变成了网站上的只读部分。尽管数据库设计很糟糕,但作为编程方面的练习,我试图减少使用的代码量。
我要达到的目的是在答复页面上:一个查询来显示第一个帖子(愚蠢地存储在“主题”表中),然后显示“答复”表中的其余帖子。
删节表:
'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/