从sql server中只有一个公共列的两个不同表中获取数据
我的表格如下: 请给我一个SQL查询以获得预期的结果集从sql server中只有一个公共列的两个不同表中获取数据,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的表格如下: 请给我一个SQL查询以获得预期的结果集 Table1 A B C D E 1 2 C1 D1 E1 2 2 C2 D2 E2 3 2 C3 D3 E3 Table2 A B F G H 1 2 F1 G1 H1 2 2 F2 G2 H2 3 5 F3 G3 H3 4
Table1
A B C D E
1 2 C1 D1 E1
2 2 C2 D2 E2
3 2 C3 D3 E3
Table2
A B F G H
1 2 F1 G1 H1
2 2 F2 G2 H2
3 5 F3 G3 H3
4 6 F4 G4 H4
预期结果:
B C D E F G H
2 C1 D1 E1 NULL NULL NULL
2 C2 D2 E2 NULL NULL NULL
2 C3 D3 E3 NULL NULL NULL
2 NULL NULL NULL F1 G1 H1
2 NULL NULL NULL F2 G2 H2
您需要组合两个或多个查询的结果,如下所示。由于一个表中有C、D、E
,而另一个表中没有这些值,因此需要使用NULL
值添加这些列,与F、G、H
相同:
SELECT *
FROM (
SELECT B,
C,
D,
E,
NULL F,
NULL G,
NULL H
FROM Table1 t1
UNION
SELECT B,
NULL C,
NULL D,
NULL E,
F,
G,
H
FROM Table2 t2
) t
WHERE B = 2
输出:
B C D E F G H
2 C1 D1 E1 NULL NULL NULL
2 C2 D2 E2 NULL NULL NULL
2 C3 D3 E3 NULL NULL NULL
2 NULL NULL NULL F1 G1 H1
2 NULL NULL NULL F2 G2 H2
到目前为止有什么尝试吗?逻辑到底是什么?这个网站是关于修复其他人的代码(或sql)不起作用。这与他们的全部工作无关。结果背后的逻辑是什么?你到目前为止做了些什么?编辑你的Q plz并放入一些代码事实上,我不认为这个问题与
join
有关,也许你应该使用union
我认为join
会起作用。