我有左连接问题我有2个表。表A:
Itemid InventlocationID
10001 200
10001 301
10001 302
和表B
ItemId InventLocationID ItemOption
10001 200 A
10001 301 B
我想得到以下结果
Itemid InventlocationID ItemOption
10001 200 A
10001 301 B
10001 302 null
我使用左连接:
SELECT a.itemid,a.inventlocationid,b.ItemOption
FROM a
left join b
on (a.ItemID = b.ITEMID and a.InventLocationid = b.INVENTLOCATIONID)
我得到的结果是:
Itemid InventlocationID Itemoption
10001 200 A
10001 301 B
任何想法如何才能达到我想要的效果? 编辑:表a和b有更多记录
答案 0 :(得分:2)
您的查询工作正常。 (检查你的数据)
create table tablea (Itemid int, InventlocationID int); insert into tablea values (10001, 200), (10001, 301), (10001, 302); create table tableb (ItemId int, InventLocationID int, ItemOption char(1)); insert into tableb values (10001, 200, 'A'), (10001, 301, 'B'); GO
5 rows affected
select a.ItemId, a.InventlocationID, b.ItemOPtion from tableA a left join tableB b on a.itemId = b.ItemId and a.InventlocationID = b.InventlocationID GO
ItemId | InventlocationID | ItemOPtion -----: | ---------------: | :--------- 10001 | 200 | A 10001 | 301 | B 10001 | 302 | null
dbfiddle here
答案 1 :(得分:1)
当您有一个引用LEFT JOIN中的列的WHERE子句时,通常会发生这种情况。它们的关键点是仅使用第一个表中的列 - 而不是LEFT / OUTER连接的列。
如果需要,您仍然可以使用ans ISNULL()或OR(col == null)。
(给你答案而不是评论)