连接两个具有不同行数的表(在sql server中)

时间:2010-09-23 07:49:24

标签: sql sql-server-2005

我有两张桌子: 的 A (COL1,COL2,COL3,COL4)

(COL1,COL2,COL3,COL4)

A 有4条记录(行), B 有6行。我想像这样加入它们,例如将它们加入 C

C B.col1 B.col2 中,A.col3,A.col4,B.col3,B.col4) (表中记录中的值不同,col1和col2包含相同的值)

当我加入A.col1 = B.col1和A.col2 = B.col2时,我采用笛卡尔积:(

PS我想在 C 中有6行,其中B.col1,B.col2,B.col3,B.col4有6行,A.col3,A.col4有4行,其他2 null

请帮帮我..

3 个答案:

答案 0 :(得分:2)

您需要使用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

修改

“不起作用”不会帮助任何人。也许您可以提供更多详细信息,了解它为何不适合您。

您可以在问题中添加一些示例数据和实际预期输出。

e.g

Create Table #TableA
(
Col1 
...
)

Insert Into #TableA
Values (...)

您的问题越清楚,答案就越好。如果人们不完全明白你的确切问题是什么以及你想要的预期输出那么我们应该如何为你提供一个完整而正确的答案。

答案 1 :(得分:1)

尝试

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)

答案 2 :(得分:1)

你可以在那里使用左外连接。但是我还有一个关于如何使用除NULL以外的其他值填充空行的其他问题。