2017-05-02 33 views
0

我想根據列組合兩個表。這裏有一個例子:組合兩個表而不重複的SQL

這些是我的兩個表:

Table1     Table2 

Person | salary  Person | Age 
Tim | 22.50  Larry | 32 
Tony | 49.00  Tim | 22 
John | 32.67  Tony | 44 
Kim | 23.42  John | 31 

而我得到的表應該是:

Person | salary | Age 
Larry |  | 32 
Tim | 22.50 | 22 
Tony | 49.00 | 44 
John | 32.67 | 31 
Kim | 23.42 | 

每個人都加入到生成的表只即使他們這樣做不是一次對工資和年齡都有價值

在此先感謝!

+0

你想讓我們爲你編寫sql查詢嗎? –

+3

查看'FULL OUTER JOIN',一定要去,然後回來,如果你仍然有問題。 – Skippy

回答

2

既然你已經標記這是MS-ACCESS我的MS Access提供SQL代碼

因爲微軟並沒有這樣做的能力完全外連接,你必須考慮的一個聰明的方式來使用現有的SQL命令來創建一個FULL OUTER JOIN。下面的代碼應該使用上面的表格來實現:

SELECT Table1.Person, Salary, Age 
FROM Table1 INNER JOIN Table2 ON Table1.Person = Table2.Person 
UNION ALL 
SELECT Table1.Person, Salary, Age 
FROM Table1 LEFT JOIN Table2 ON Table1.Person = Table2.Person 
WHERE Table2.Person Is Null 
UNION ALL 
SELECT Table2.Person, Salary, Age 
FROM Table1 RIGHT JOIN Table2 ON Table1.Person = Table2.Person 
WHERE Table1.Person Is Null 
0

這可能是通過完全外連接完成的,但由於您使用的是ms訪問,您將不得不按以下方式使用工會全部
試試這個,讓我知道萬一你遇到任何困難。

SELECT * FROM table1 t1 
LEFT JOIN 
table2 t2 
ON t1.person = t2.person 
UNION all 
SELECT * FROM table1 t1 
RIGHT JOIN 
table2 t2 
ON t1.person = t2.person 
+0

它適合你嗎? –

+0

不,它沒有。結果表格有Person列的兩個副本,並且每個值有兩個副本 – tee

0

我不知道到底是你的問題,但這裏是一個SQL查詢,會做你要求的正是:

SELECT Person, salary, Age 
FROM Table1 FULL OUTER JOIN Table2 
WHERE Table1.Person = Table2.Person 

編輯:對於這不會在MS-ACCESS工作它缺乏對全外連接的支持,另外兩個答案已經解釋了替代方案。

相關問題