RIGHT JOIN没有返回所有结果

时间:2012-12-18 12:43:44

标签: mysql

我有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

但并非每个主题都有与之相关的帖子。那些没有任何帖子的人不会被退回。

如何解决?

3 个答案:

答案 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
相关问题