如果另一个表中存在相应的行,则SQL返回另一个表中的列的一行

时间:2018-05-09 14:08:44

标签: mysql sql

我在数据库中有两个表,a& b

b有一个引用a上的列的外键。

我正在尝试弄清楚如何从b获取一行,其中所有列都来自相应的a。但是,并非b的所有行都会在a中包含相应的行。

以下SQL将返回ba中包含两个表中所有列的相应行的所有行。

"SELECT * FROM b INNER JOIN a ON b.foo = a.foo

但我只想要一行,其中b.foo等于某个值,其中来自a(如果有)的相应列。

所以,天真地:

"SELECT * FROM b INNER JOIN a ON b.foo = a.foo WHERE b.foo = 'some value'

问题是,这有时不会返回任何行,因为a中可能没有相应的行。但我们保证b中的某些行存在b.foo等于some value,并且应始终返回。

是否有一个SQL命令始终可以返回b中的一行(假设b中的行存在),或者a中的相应列,或者相应的a是否存在不存在,只有b中的列?

1 个答案:

答案 0 :(得分:4)

是的,如果您将INNER JOIN更改为LEFT OUTER JOIN,您将始终接收b行,并且a列值将为NULL如果没有找到匹配的行。