执行 LEFT JOIN,匹配值在第二个 table 中不存在时从结果中丢失

Doing a LEFT JOIN, the matching value is lost from the result when it does not exist in the second table

当我离开时,像这样连接两个表:

SELECT * FROM a LEFT JOIN b ON a.id = b.id

如果 b 中没有匹配的行,那么 "id" 是空的,尽管它存在于 a 中。

我怎样才能保持这个值?

它不是真的空。这正是您使用的工具解释结果的方式。你看,问题在于结果集有两列名为 id,所以其中一列是任意选择的——它似乎不是你想要的那一列。

最简单的方法是切换到 using 子句:

SELECT *
FROM a LEFT JOIN
     b 
     USING (id);

这个 returns id 在结果集中只有一次,它应该在第一个 table 中有值(在这种情况下)。