sql - 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 之后的子句有什么意义。
解决方案
AND 1 = 0
使得on
条件总是评估为假。
结果,您将获得 table1 中NULL
的所有行以及 table2 中NULL
的列的值,以及 table2 中的所有行以及 table1 中的列的值。
我不确定这个的真正用途是什么。 union all
通常是获得这种结果的更好方法。
结果获得相同数量的行是不匹配的证据——但不是确凿的证据。
推荐阅读
- python - 合并三个数据框
- json - 在 json 中标准化传入的 RESTful API 接收时间和时间戳
- excel - 向合并的单元格添加超扭结
- mysql - 我们可以在没有 Eclipse IDE 的情况下加密 BIRT 连接配置文件吗?
- swift - 从 URL 加载图像正在显示,但我无法检索它
- python - 具有多类召回自定义指标的 Tensorflow 2 ModelCheckpoint 回调
- neo4j - Neo4J 在非查询事务中取出长寿命锁
- csv - 使用数据格式为csv的inputs.tail时出现Telegraf不支持的类型问题
- python - Seaborn catplot (kind='count') 将条形图更改为饼图
- bash - Loop with 2 successive same exit code