选择正确的列

时间:2016-12-04 17:11:58

标签: sql oracle insert union

我有一个查询。

with result as
(
select t1.name, t1.number, t2.number from table1 t1, table2 t2 where some conditions
union all
select t1.name, t1.number, t3.number from table1 t1, table3 t3 where some conditions
)select * from result

我需要在table5中插入t1.name和t2.number

table5与t1具有相同的列。

如果我做的话

insert in table5(name, number)
select r.name, r.number from result r

什么会被认为是r.number? t1.number还是t2.number?因为列具有相同的名称。还是有办法去辨别?如何使查询跳过t3.number的每一行?我能做到吗?

例如我有table1

A (+1)11111111
B (+1)22222222
C (+1)33333333

表2

(+2)44444444
(+2)55555555

首先选择会让我

A (+1)11111111 (+2)44444444
B (+1)22222222 (+2)55555555

表3

(+3)66666666
(+3)88888888
(+3)97898789

第二次选择的结果

B (+1)22222222 (+3)88888888
C (+1)33333333 (+3)97898789

这将是所有

的结果
A (+1)11111111 (+2)44444444
B (+1)22222222 (+2)55555555
B (+1)22222222 (+3)88888888
C (+1)33333333 (+3)97898789

我最终想要的是

A (+2)44444444
B (+2)55555555

最终结果不应该包含此行

B (+1)22222222 (+3)88888888
C (+1)33333333 (+3)97898789

1 个答案:

答案 0 :(得分:0)

两者。在某些行中,t2.numbernumber,而其他行t3.numbernumber

单个结果集中union all的结果。结果集不知道任何特定列中值的来源(尽管您可以包含具有此信息的另一列)。