UNION没有比较其中一列

时间:2016-07-04 10:54:50

标签: sql oracle union

我有两个问题

select A, B, C, D from T1, T2

select A, B, C, D from T2, T3

我想做两个查询的UNION(没有重复)但不比较D列,也就是说,如果列AB和C相同,那么无论D是什么,它们都被认为是重复的。我不想从连接中选择表T1,T2和T3。这可能在一个声明中吗? (这是Oracle)

1 个答案:

答案 0 :(得分:2)

使用UNIONGROUP BY执行此操作,如下所示;)

select A, B, C
from(
    select A, B, C, D from T1, T2
    union
    select A, B, C, D from T2, T3
)t
group by A, B, C

D相同时,你必须指定你想得到哪个A, B, C值,这里我假设你得到max(D),就像这样;

select A, B, C, max(D) as D
from(
    select A, B, C, D from T1, T2
    union
    select A, B, C, D from T2, T3
)t
group by A, B, C

无论您要保留哪个值,当您在oracle中使用group by时,您只能选择group by或其他具有聚合函数的列中显示的列。