即使一个表为空,也要加入三个表

时间:2013-04-20 13:15:05

标签: mysql sql

我正试图从三个表中获取值,即使其中一个是空的。 因为我可以使用if else语句,具体取决于following.follow_id行是否为空。

SELECT user.id, user.username,user.email, userdetails.profile_img, following.follow_id 
FROM user 
JOIN userdetails ON user.id = userdetails.user_id 
JOIN following ON user.id = following.follow_id 
GROUP BY user.id;

现在,如果行following.follow_id上有值,它只会给我一个值。 但即使有一个空表,我也可以从user_id获得所有结果。

任何线索?

3 个答案:

答案 0 :(得分:3)

替换“JOIN”,这意味着“INNER JOIN”,通过“LEFT JOIN”应该可以解决问题。

答案 1 :(得分:1)

是的,您需要使用OUTER联接来完成此任务。

原因是当你说JOIN时,这实际上被解释为INNER JOIN,在这种情况下,所有表中都需要匹配。

答案 2 :(得分:1)

现在,您正在使用这三个表中的INNER联接。这意味着您将只返回在其他表中具有相应行的行。也就是说,如果给定的user.id没有相应的follow.follow_id和userdetails.user_id,那么该行将被关闭。

如果您使用从用户到其他表的LEFT JOIN(左外连接),我认为您应该得到您正在寻找的结果。

有关INNER与OUTER联接的更多信息,这个问题可能会有所帮助: What is the difference between "INNER JOIN" and "OUTER JOIN"?