例如:我有两个表EPL1和EPL2,其中包含有得分,辅助,比赛等的足球运动员的数据。两个表的结构完全相同。
第一张表包含罗纳尔多的统计数据,梅西每人有2个进球。 第二张表包含罗纳尔多,梅西的统计数据,每个都有3个目标。
现在我想把这两个表结合起来,想要一个有罗纳尔多的输出,梅西各有5个进球。
最重要的注意事项是两个表都具有完全相同的结构和列名,我只想组合(添加)两个表中所有列的值。
那么我应该在Oracle中使用什么样的连接?
答案 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;