2010-11-10 98 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