问题
I have two tables: A(col1,col2,col3,col4)
B(col1,col2,col3,col4)
Table A has 4 records(rows) and B has 6 rows.I want to join them like this,for example join them in C table
C(B.col1,B.col2,A.col3,A.col4,B.col3,B.col4) (tables have different values in records just col1 and col2 contains the same values)
when i join them on A.col1=B.col1 and A.col2=B.col2 I take Cartesian product :(
P.S I want to have 6 rows in C,where B.col1,B.col2,B.col3,B.col4 have 6rows and A.col3,A.col4 have 4 rows and other 2 null
please help me..
回答1:
You need to use a FULL OUTER JOIN
Select a.Col1,
a.Col2,
a.Col3,
a.Col4,
b.Col3,
b.Col4
From TableA a
Full Outer Join TableB b on a.Col1 = b.Col1
And a.Col2 = b.Col2
EDIT:
"doesn't work" is not going to help anyone. Maybe you could provide further details as to why it isn't working for you.
You could add some example data and the actual expected output to your question.
e.g
Create Table #TableA
(
Col1
...
)
Insert Into #TableA
Values (...)
The clearer your question then the better the answers will be. If people don't fully understand what your exact problem is and expected output you want then how are we supposed to provide you with a full and correct answer.
回答2:
Try
SELECT A.col1, A.col2, A.col3, A.col4, B.col3, B.col4
FROM A
FULL OUTER JOIN B on (A.col1 = B.col1 AND A.col2 = B.col2)
回答3:
You can use left outer join there.. But I have an additional question on how to populate the empty rows with some other values than NULL..
来源:https://stackoverflow.com/questions/3776312/join-two-tables-with-different-number-of-rowsin-sql-server