执行 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 中有值(在这种情况下)。
当我离开时,像这样连接两个表:
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 中有值(在这种情况下)。