Oracle full join "ON" 条件和 "AND" 子句

Oracle full join "ON" condition and "AND" clause

这里是查询:

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

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

AND 1 = 0 使 on 条件总是计算为假。

因此,您将获得表 1 中的所有行,表 2 中的列具有 NULL 值,以及表 2 中表 1 中的列具有 NULL 值的所有行。

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

结果的行数相同是没有匹配项的证据,但不是决定性证据。