2011-05-18 58 views
1

我有兩個表我想合併如下。SQL語法合併兩個表?

表一:

columns :a1  a2 
data :aaa a2 
     bbb b2 

表B:

columns :a1  b2 
data :aaa a3 
     ccc c3 

最終期望的輸出表將包括以下:

表最後:

columns :a1  a2 b2 
data :aaa a2 a3 
     bbb b2 
     ccc   c3 
+1

什麼數據庫? ?什麼版本?哪些數據類型是你的列?你想要加入兩個表? – 2011-05-18 08:07:03

回答

3
SELECT 
     a.a1, a.a2, b.b2 
FROM 
     a 
FULL JOIN 
     b ON a.a1 = b.a1 
+2

它有時被稱爲'FULL OUTER JOIN'。閱讀您的DBMS的文檔。 – 2011-05-18 08:09:47

0

你需要的東西來JOIN兩個表像

SELECT a.a1, a.a2, b.b2 FROM table_a a 
JOIN table_b b ON a.a1 = b.a1 

取決於你需要什麼,你可能需要一個lEFT JOIN(有時稱爲OUTER JOIN)。實際的語法還取決於你正在使用的數據庫。這個例子將在MySQL上工作。

1
-- Test data 
with TableA(a1, a2) as 
(
    select 'aaa', 'a1' union all 
    select 'bbb', 'b2' 
), 
TableB(a1, b2) as 
(
    select 'aaa', 'a3' union all 
    select 'ccc', 'c3' 
) 


select 
    coalesce(A.a1, B.A1) as a1, 
    A.a2, 
    B.b2 
from TableA as A 
    full outer join TableB as B 
    on A.a1 = B.a1 

結果:

a1 a2 b2 
---- ---- ---- 
aaa a1 a3 
ccc NULL c3 
bbb b2 NULL 
0
SELECT a.a1, a.a2, b.b2 
INTO NewTable 
FROM a,b 
Where b.a1=a.a1 
+0

請不要使用「舊式」的遺產由剛剛列舉的表在FROM子句連接 - 你應該切換到使用正確的ANSI JOIN語法 - '從INNER JOIN B關於......' – 2011-05-18 09:02:17

+0

這個例子就當記錄都在一個表中的情況下出現故障而不是其他諸如BBB和CCC的例子在OP得出的,因此只返回一個記錄{AAA,A2,A3} – Seph 2011-05-18 09:09:10