2015-06-09 28 views
1

我有兩個表:加入在SQL服務器的兩個表2008

表A:

Id (int), TypeA (varchar(25)) 
    1  a 
    2  Null 
    3  b 
    4  c 
    5  d 
    6  v 

表B:

Id (int), TypeB (varchar(25)) 
    2  A 
    3  C 
    4  null 
    5  E 
    7  S 

結果應該是:

Id (int), TypeA (varchar(25)), TypeB (varchar(25)) 
    1   a     Null 
    2   Null    A 
    3   b     C 
    4   c     Null 
    5   d     E 
    6   v     Null 
    7   Null    S 

有什麼想法?由於

+0

它被稱爲完全外連接。 –

+2

有人敢說有人會爲你做這件事,但這是非常基本的,所以看看這個TRY並做(你可能會知道),然後回來,如果你有任何問題。 http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins – Fred

回答

1

你可以試試這個,這是有點低質量的答案,但它會幫助您解決您的問題是肯定的。

SELECT ID,TypeA, TypeB FROM (
    SELECT A.ID, A.TypeA, B.TypeB FROM TableA AS A LEFT JOIN TableB AS B ON A.ID = B.ID 
    UNION 
    SELECT B.ID, A.TypeA, B.TypeB FROM TableA AS A RIGHT JOIN TableB AS B ON A.ID = B.ID 
) AS TableTemp 
GROUP BY ID,TypeA, TypeB 
0

使用此代碼:

CREATE TABLE #t1 (id INT, NAME VARCHAR(25)) 
CREATE TABLE #t2 (id INT, NAME VARCHAR(25)) 
insert into #t1 values(1,'a') 
insert into #t1 values(2,NULL) 
insert into #t1 values(3,'b') 
insert into #t1 values(4,'c') 
insert into #t1 values(5,'d') 
insert into #t1 values(6,'v') 

insert into #t2 values(2,'A') 
insert into #t2 values(3,'C') 
insert into #t2 values(4,NULL) 
insert into #t2 values(5,'E') 
insert into #t2 values(7,'S') 


select * from #t1 
select * from #t2 


select a.name,b.name from #t1 a 
FULL OUTER JOIN #t2 b 
ON a.id=b.id 

結果:

name name 
a  NULL 
NULL A 
b  C 
c  NULL 
d  E 
v  NULL 
NULL S 
+0

根據我的說法,如果選擇ID,它會在'7'的位置返回NULL。 –