Oracle:如何仅返回第二个并集的行(如果存在)?

时间:2019-10-04 08:44:04

标签: sql oracle select

我在Oracle中有两个选择与联合结合。我只想返回第二个联合的行,即使它返回了什么,即使第一个联合也可能返回行。

我当时正在考虑使用nvl,但不确定如何实现。

select 1 seq,
       x coord1,
       y coord2,
       z coord3
  from tableA a
 where a.prodRef = 4711
 union
select 2 seq,
       a coord1,
       b coord2,
       c coord3
  from tableB b
 where b.prodRef = 4711

现在,select从带有seq 1和seq 2的查询返回行。如果查询带有seq 2的输出,我只想查看这些数据(不包括seq 1行),但是,在某些情况下seq 2可能返回空行。当然,在这种情况下,我只取序列1的数据。

你们对解决这个问题有任何想法吗?我的脑子完全空了。

1 个答案:

答案 0 :(得分:0)

使用not exists

select 2 as seq, a as coord1, b as coord2, c as coord3
from tableB b
where b.prodRef = 4711
union all
select 1 as seq, x as coord1, y as coord2, z as coord3
from tableA a
where a.prodRef = 4711 and
      not exists (select 1 from tableB b where b.prodRef = a.prodRef);