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
通常是获得此类结果的更好方法。
结果的行数相同是没有匹配项的证据,但不是决定性证据。
这里是查询:
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
通常是获得此类结果的更好方法。
结果的行数相同是没有匹配项的证据,但不是决定性证据。