[英]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)。
插入到NewTable中,按玩家分组,选择总和(目标),玩家(选择*从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.