首页 > 解决方案 > Oracle 全联接“ON”条件和“AND”子句

问题描述

这是查询:

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 之后的子句有什么意义。

标签: sqloracleouter-join

解决方案


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

结果,您将获得 table1 中NULL的所有行以及 table2 中NULL的列的值,以及 table2 中的所有行以及 table1 中的列的值。

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

结果获得相同数量的行是不匹配的证据——但不是确凿的证据。


推荐阅读