2010-11-10 62 views
3

我有一个表(T1)我怎样才能加入这两张桌子?

id score 
22  1 
35  3 
51  4 

和另一个(T2)

id score 
22  2 
35  1 
10  5 

我想用SQL查询来创建下表。

id score 
10  5 
22  3 
35  4 
51  5 

即我需要合并id并将分数加在一起。

理想情况下在ANSI SQL中。

+0

@Prix,一)请张贴在回答部分答案,B)执行插入时,你可以做的选择是不错的建议 – Unreason 2010-11-10 14:02:04

+1

是'在最后的结果集中51-5'打算? – Quassnoi 2010-11-10 14:07:33

+0

@Prix。罗杰已经有了这些数据,他想要选择它。他不需要创建表格;从当前选择;然后从中选择!?!?! – PerformanceDBA 2010-11-10 14:33:41

回答

2
SELECT id, SUM(score) 
FROM (
     SELECT * 
     FROM t1 
     UNION ALL 
     SELECT * 
     FROM t2 
     ) q 
GROUP BY 
     id 
+0

+1优雅地避免问ID是否真的独特 – Unreason 2010-11-10 14:03:13

+2

@非理由:从他们不是的例子中可以明显看出,不是吗? – Quassnoi 2010-11-10 14:04:01

+0

工程就像一个魅力。非常感谢你! – 2010-11-10 14:05:07

2

使用UNION ALL到两个表的所有记录合并成一个和GROUP BY以获得每个ID的总和。

SELECT id, SUM(score) 
FROM (
      SELECT id, score 
      FROM t1  
      UNION ALL 
      SELECT id, score 
      FROM t2 
     ) t 
GROUP BY 
     t.ID 
0
create table a(id int, score int) 
create table b(id int, score int) 

insert into a values(1, 10) 
insert into a values(2, 5) 
insert into b values(1, 15) 
insert into b values(3, 20) 

select id, sum(score) from 
(select * from a 
union all 
select * from b) s 
group by id