首页 > 解决方案 > 如果第一个查询没有找到任何内容,则进行条件查询?

问题描述

我需要从一个表中获取一个字段,如果它不存在,请尝试从另一个表中获取

 select printer_id from all_printers where printer_name ='printer1'

如果它在那里 - 退回它,如果它不在那里

select printer_id from new_printers where printer_name ='printer1'

因为我正在编写一个 Web 应用程序,所以我想最小化代码和 DB 命中,我想知道是否有一种方法可以在单个查询中执行此操作,而无需同时点击两个查询。

left join 会起作用,但表很大(数百万条记录),如果不需要,我不希望它同时击中它们。

标签: sqloracleoracle11g

解决方案


您可以使用not exists

with ap as (
      select printer_id from all_printers where printer_name = 'printer1'
     )
select printer_id
from ap
union all
select printer_id
from new_printers np
where not exists (select 1 from ap)

推荐阅读