离开加入oracle

时间:2017-05-03 21:46:49

标签: sql oracle

我有2个表 - MyCustomer和MyCustomerLocation,如下所示

MyCustomer

enter image description here

MyCustomerLocation

enter image description here

当我运行以下查询时,我得到2行:

select * 
from MyCustomer A

left join MyCustomerLocation B
on A.CustomerId = B.CustomerId and B.CustomerLocations = 'Portland'

left join MyCustomerLocation B
on A.CustomerId = B.CustomerId and B.CustomerLocations = 'Seattle';

enter image description here

我运行此查询,我认为完全相同,我得到不同的结果

select * 
from MyCustomer A

left join MyCustomerLocation B
on A.CustomerId = B.CustomerId and B.CustomerLocations in ('Seattle',      
'Portland');

enter image description here

根据我的知识,左连接应该给我左表中的所有行,只给出右表中的匹配行(查询2正在进行的操作)。 我不明白为什么查询1只产生2行?我们在表2上仍然有3个匹配行,这使得oracle认为查询1与查询2不同。

0 个答案:

没有答案