LEFT JOIN查询不返回第一个表中的所有行

时间:2015-06-02 09:52:36

标签: sql left-join

使用管理工作室SQL Server 2008 R2

尝试执行LEFT JOIN并且我需要返回第一个表中的所有行,而不管该行是否能够与第二个表绑定。 不确定我是否正确解释了。

这就是我现在所得到的:

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

我需要查询返回公司销售的所有商品,并在商店001显示库存。

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

所以,基本上,如果没有提及0商店,我需要查询返回001股票。

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

1 个答案:

答案 0 :(得分:9)

将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