Oracle完全加入“ON”条件和“AND”子句

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

这是查询:

select *
from Table1 tb1 FULL JOIN Table2
     tb2
     on tb1.party_number = tb2.party_number  // returns 100 results

如果我修改查询以添加另一个条件,如下所示:

select *
from Table1 tb1 FULL JOIN
     Table2 tb2
     on tb1.party_number = tb2.party_number AND 
        1=0

我的理解是它应该返回0结果,但它仍然返回100个与第一个相同的结果。我不明白的是,AND之后的条款有什么意义。

sql oracle outer-join
1个回答
1
投票

AND 1 = 0使得on条件总是评估为假。

因此,您将获得table1中的所有行,其中包含来自table2的列的NULL值,以及来自table2的所有行以及来自table1的列的NULL值。

我不确定这是真正的用途。 union all通常是获得此类结果的更好方法。

结果得到相同数量的行是证据 - 但不是确凿的证据 - 没有匹配。

© www.soinside.com 2019 - 2024. All rights reserved.