我有posts
表。每个帖子都有topic_id
字段,对应id
表中相应的topics
字段。
我需要按topics
表格中的date_created
字段对posts
进行排序。
此外,每个主题都有forum_id
,我只需要显示和排序特定forum_id
的主题。
我试过这样的事情:
SELECT
topics.id, topics.title
FROM
topics RIGHT JOIN posts ON topics.id = posts.topic_id
WHERE
topics.forum_id = 1
ORDER BY
posts.date_created DESC
但并非每个主题都有与之相关的帖子。那些没有任何帖子的人不会被退回。
如何解决?
答案 0 :(得分:1)
尝试使用LEFT JOIN而不是RIGHT JOIN
答案 1 :(得分:1)
SELECT
topics.id, topics.title
FROM
(topics RIGHT JOIN posts ON (topics.id = posts.topic_id))
WHERE
topics.forum_id = 1
ORDER BY
posts.date_created DESC
试试这个
答案 2 :(得分:0)
因为帖子上没有数据,可能会丢失行。尝试使用ifnull函数转换null值,如下所示:
SELECT
topics.id, topics.title
FROM
topics LEFT JOIN posts ON topics.id = posts.topic_id
WHERE
topics.forum_id = 1
ORDER BY
ifnull(posts.date_created, '1900-01-01 00:00:00') DESC