我正试图从三个表中获取值,即使其中一个是空的。
因为我可以使用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 :(得分: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"?