我有一个连接多个表并返回相当多列的查询。
另一个表的索引列引用了其中一个连接表的主键。现在我想在查询中添加另一列,说明新表中是否至少存在一个具有该 ID 的行。
所以如果我有一张旧 table
ID
1
2
3
和新表
REF_ID
1
1
1
3
然后我想得到
ID REF_EXISTS
1 1
2 0
3 1
我可以想到几种方法来做到这一点,但最优雅/最有效的方法是什么?
编辑 我测试了在旧表中提供 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
关于sql - Oracle:检查其他表中是否存在行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917089/