Pet*_*ang 5 sql database oracle join exists
我有一个查询连接几个表并返回相当多的列.
另一个表的索引列引用其中一个连接表的PK.现在,我想在查询中添加另一列,指出新表中是否至少存在一个具有该ID的行.
所以,如果我有一张旧桌子
ID
1
2
3
Run Code Online (Sandbox Code Playgroud)
和新表
REF_ID
1
1
1
3
Run Code Online (Sandbox Code Playgroud)
然后我想得到
ID REF_EXISTS
1 1
2 0
3 1
Run Code Online (Sandbox Code Playgroud)
我可以想到几种方法,但最优雅/最有效的方法是什么?
编辑 我测试了旧表中50.000记录提供的查询的性能,每个其他记录与新表中的两行匹配,因此一半的记录具有REF_EXISTS = 1.
如果有人感兴趣,我会将平均结果作为评论添加到答案中.感谢大家!
另外一个选项:
select O.ID
, case when N.ref_id is not null then 1 else 0 end as ref_exists
from old_table o
left outer join (select distinct ref_id from new_table) N
on O.id = N.ref_id
Run Code Online (Sandbox Code Playgroud)