UNION 不比较其中一列
UNION without comparing one of the columns
我有两个问题
select A, B, C, D from T1, T2
select A, B, C, D from T2, T3
我想对两个查询进行 UNION(无重复)但不比较 D 列,也就是说,如果列 A B 和 C 相同,则无论 D 为何,它们都被视为重复。我不想 select 来自联接表 T1、T2 和 T3。这可能在一个声明中吗?
(这是甲骨文)
使用 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
并且你必须指定当A, B, C
相同时你想要得到哪个D
值,这里我假设你得到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
时,你只能select出现在group by
中的列或其他一些具有聚合函数的列。
我有两个问题
select A, B, C, D from T1, T2
select A, B, C, D from T2, T3
我想对两个查询进行 UNION(无重复)但不比较 D 列,也就是说,如果列 A B 和 C 相同,则无论 D 为何,它们都被视为重复。我不想 select 来自联接表 T1、T2 和 T3。这可能在一个声明中吗? (这是甲骨文)
使用 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
并且你必须指定当A, B, C
相同时你想要得到哪个D
值,这里我假设你得到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
时,你只能select出现在group by
中的列或其他一些具有聚合函数的列。