我有两个问题
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)
答案 0 :(得分:2)
使用UNION
和GROUP 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
或其他具有聚合函数的列中显示的列。