join two tables with different number of rows(in sql server)

我是研究僧i 提交于 2019-12-12 12:42:01

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!