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

问题描述 投票:0回答:1

使用管理工作室为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作为库存。

sql left-join
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.