连接表为空时,JOIN SQL不起作用

时间:2019-09-19 17:59:35

标签: mysql sql

我正在一个项目中,一个用户存在多个表数据,但是如果其中一个表中有一个为空,则SQL会返回空数据,即使其他表数据也存在,如SQL

$id = 40;
SELECT * 
  FROM players a
  JOIN pitcher b 
    ON a.id = b.user_id 
  JOIN outfield_position c 
    ON a.id = c.user_id
  JOIN infield_position d
    ON a.id = d.user_id
  JOIN defensive_statistics e
    ON a.id = e.user_id
  JOIN career f
    ON a.id = f.user_id
 WHERE a.id = $id

就像$outfield_position表为空一样,SQL返回一个空数组,但有时这里返回数据,如果每种方法都可用或不可用,该怎么办?

谢谢

1 个答案:

答案 0 :(得分:0)

使用的默认联接为内部联接,如此处joins所述。 在这种情况下,输出将是与其连接的表的交集,因此,如果任何表没有任何值,则交集将给出空结果。

您可以使用LEFT OUTER JOIN或FULL OUTER JOIN进行尝试,如果在$players中存在数据,则在Left Outer Join中显示该值。如果不确定数据,则Full Outer Join将给出所有结果桌子。