繁体   English   中英

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

[英]How to add the data of two columns from two tables having the same structure?

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

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

现在,我要合并这两个表,并希望得到一个输出,其中包含Ronaldo和Messi,每个目标有5个目标。

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

那么我应该在Oracle中使用哪种联接呢?

最简单的方法是使用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)。

插入到NewT​​able中,按玩家分组,选择总和(目标),玩家(选择*从EPL1并入所有选择*从EPL2)

在不知道表结构的情况下,要知道答案有点困难,但是您可能需要这样的东西

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

同样,拥有两个结构相同的表也不是正确的设计,您可以使用以下方法获得所需的输出:

SELECT * FROM epl1
UNION ALL
SELECT * FROM epl2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM