如何从两个具有相同结构的表中添加两列数据?

时间:2014-04-20 15:53:22

标签: sql oracle

例如:我有两个表EPL1和EPL2,其中包含有得分,辅助,比赛等的足球运动员的数据。两个表的结构完全相同。

第一张表包含罗纳尔多的统计数据,梅西每人有2个进球。 第二张表包含罗纳尔多,梅西的统计数据,每个都有3个目标。

现在我想把这两个表结合起来,想要一个有罗纳尔多的输出,梅西各有5个进球。

最重要的注意事项是两个表都具有完全相同的结构和列名,我只想组合(添加)两个表中所有列的值。

那么我应该在Oracle中使用什么样的连接?

4 个答案:

答案 0 :(得分:1)

最简单的方法是使用UNION ALL语句。

select player, sum(goals) as goals
from 
     ( select *
       from table1
       union all
       select *
       from table2 )
group by player

当两个表具有相同的结构(或者您只是选择一个投影)并且您想要从所有表中选择所有行时,这很有效。这种方法很容易扩展到三个或更多表。

请注意,您需要使用UNION ALL。简单的UNION运算符会产生错误的结果,比如表1中的(' XAVI',2)和表2中的(' XAVI',2):它适用于不同的过滤器,因此您将得到(' XAVI',2)的最终结果,而不是(' XAVI',4)。

答案 1 :(得分:0)

插入NewTable 选择总和(目标),玩家(选择*来自EPL1联盟全部选择*来自EPL2)分组玩家

答案 2 :(得分:0)

不知道表结构,知道答案有点困难,但你可能需要这样的东西

select epl1.name, sum(epl1.goals + epl2.goals)
from epl1
left join epl2
where epl1.name = epl2.name
group by epl1.name

答案 3 :(得分:0)

此外,如果两个具有相同结构的表格设计不正确,您可以使用以下方法获得所需的输出:

SELECT * FROM epl1
UNION ALL
SELECT * FROM epl2;