SQL将两个表连接在一起

时间:2014-07-29 23:09:38

标签: sql sql-server join

我有以下表格:

table1
a     b
1     100
2     200
3     300
4     400

table2
c     b
55    100
55    200
56    300

我想获得以下输出:

55    100    1
55    200    2
55    300    -
55    400    -
56    100    -
56    200    -
56    300    3
56    400    -

我尝试了以下内容:

SELECT *
FROM table1
full JOIN table2

输出:

 a    b    c    a
 1    100  55   100
 1    100  55   200
 1    100  55   100
 1    100  55   200
 2    300  56   300
 ....

我也尝试过:

SELECT * 
FROM table1 
join table2 on table1.b = table2.b 
union 
SELECT * 
FROM table2 
join table1 on table1.b = table2.b

输出:

1    100    55   100
1    200    55   200
3    300    56   300

这在Microsoft SQL 2012中是否可行?以及如何

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解您的预期结果,但听起来您正在寻找FULL OUTER JOIN

SELECT table1.a, COALESCE(table1.b, table2.b), table2.c
FROM table1
FULL OUTER JOIN table2 ON table1.b = table2.b

这将从table1获取字段,如果存在,则将其映射到table2的字段。

根据您的示例,它将返回下表。

A    B      C
1    100    55
2    200    55
3    300    56
4    400    (null)

我知道这与您给出的预期结果不同,但这会关联实际存在的数据。

我要求在评论中做出澄清,并在必要时对其进行修改。