即使一个为空也可以连接三个表

问题描述:

即使一个为空,我也想从三个表中获取值。 由于我可以使用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获得所有结果。

任何线索?

+0

我想你想的'外join'。 – 2013-04-20 13:17:11

用“LEFT JOIN”代替“JOIN”,这意味着“INNER JOIN”应该做到这一点。

+0

谢谢大家,左连接做到了!非常感谢。 – Dymond 2013-04-20 13:27:25

是的,你需要使用一个外部连接来完成这个。

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

现在,您正在使用这3个表中的INNER连接。这意味着你只能找回在其他表中有相应行的行。也就是说,如果给定的user.id没有对应的following.follow_id和userdetails.user_id,那么该行将被忽略。

如果你使用用户到其他表的左加入(左外连接),我认为你应该有你要找的结果。

更多有关INNER VS外部连接,这个问题可能会有所帮助: What is the difference between "INNER JOIN" and "OUTER JOIN"?