MYSQL连接查询结果
我有一个多年前建立的老论坛,现在变成了网站上的只读部分。作为编程练习,尽管数据库设计很糟糕,但我正试图减少代码的使用量 我试图实现的是在回复页面上:一个查询显示第一篇帖子(愚蠢地存储在“主题”表中),然后显示“回复”表中的其余帖子 简表:MYSQL连接查询结果,mysql,Mysql,我有一个多年前建立的老论坛,现在变成了网站上的只读部分。作为编程练习,尽管数据库设计很糟糕,但我正试图减少代码的使用量 我试图实现的是在回复页面上:一个查询显示第一篇帖子(愚蠢地存储在“主题”表中),然后显示“回复”表中的其余帖子 简表: 'replies' topicID posted_by body date_posted 'topics' topicID subject body posted_by date_posted 我想得到的表格是: “主题”的初始帖子,然后是按发布日期排序的
'replies'
topicID
posted_by
body
date_posted
'topics'
topicID
subject
body
posted_by
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
有没有人对如何调整此设置以获得我想要的方案有任何想法?联合查询应提供您要查找的数据:
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;
嗨,谢谢,这太棒了。它几乎做了我想要的一切。直到出现错误的
ORDER BY
。我必须摆弄它,看看我能做什么:)编辑:我刚刚删除了r.
别名,它工作了^^Oops,很抱歉。另一种方法是,可以用括号将UNION查询的第二部分括起来,以便只对回复应用排序。