LEFT JOIN 查询未返回第一个 table 中的所有行

LEFT JOIN query not returning all rows in first table

使用 Management Studio SQL Server 2008 R2

尝试执行 LEFT JOIN,我需要 return 第一个 table 的所有行,无论该行是否能够与第二个 table 并列。 不确定我解释的对不对。

这是我现在得到的:

select a.id, a.name, b.store, b.stock
from products a left join stock b
on a.id = b.id
where b.store = '001'
order by a.id

我需要查询 return 公司销售的所有产品,并显示其在商店的库存 001

但现在的方式只会显示提及商店中产品库存的行 001

所以,基本上,如果未提及 001 商店,我需要查询 return 0 库存。

所有只有商店 002 库存的产品也需要列出,并带有 0 作为库存。

将 b 条件从 WHERE 移动到 ON 以获得真正的 LEFT JOIN。 (在 WHERE 子句中使用 b 条件,它作为常规 inner join... 执行)

select a.id, a.name, b.store, b.stock
from products a left join stock b
  on a.id = b.id and b.store = '001'
order by a.id