我在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的数据。
你们对解决这个问题有任何想法吗?我的脑子完全空了。
答案 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);