我有以下表格:
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中是否可行?以及如何
答案 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)
我知道这与您给出的预期结果不同,但这会关联实际存在的数据。
我要求在评论中做出澄清,并在必要时对其进行修改。