我有2个表 - MyCustomer和MyCustomerLocation,如下所示
MyCustomer
MyCustomerLocation
当我运行以下查询时,我得到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';
我运行此查询,我认为完全相同,我得到不同的结果
select *
from MyCustomer A
left join MyCustomerLocation B
on A.CustomerId = B.CustomerId and B.CustomerLocations in ('Seattle',
'Portland');
根据我的知识,左连接应该给我左表中的所有行,只给出右表中的匹配行(查询2正在进行的操作)。 我不明白为什么查询1只产生2行?我们在表2上仍然有3个匹配行,这使得oracle认为查询1与查询2不同。