Mysql 联接表为空时联接SQL不工作

Mysql 联接表为空时联接SQL不工作,mysql,sql,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

我正在从事一个项目,其中一个用户存在多个表数据,但如果其中任何一个表为空,则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\u position
表为空,那么SQL将返回一个空数组,但有时可能是这里的数据,如果数据可用或不可用,我该怎么办


谢谢

使用的默认联接是内部联接,正如这里已经解释的那样。 在这种情况下,输出将是与其联接的表的交集,因此,如果任何表没有任何值,则交集将给出空结果


您可以尝试使用左外联接或全外联接,如果数据存在于
$players
中,则在左外联接中会显示值。如果不确定数据,则全外联接将给出所有表的所有结果。

您是否尝试过
左联接
?这就是
左联接
的发明目的。是的!是的,非常感谢。这段代码看起来很复杂,所以尽可能使用占位符值是值得的。为什么表名是动态的?这通常是一个不规则模式的标志,需要用它来表示。有这么多不同的表真的有意义吗