在同一列中左连接行和右连接表行。
我有两个表(经理和工人)。一个经理下的工人的名字应该在经理名字下面。预期的输出如下所示:-
Manager Table:
ManagerCode Name Age Location
1 Chris 52 A
2 Rick 55 B
3 David 50 C
Worker Table
ManagerCode WName Age
1 Harry 33
1 Phil 40
2 Johnny 28
2 Jeff 47
Expected table:
ManagerCode Name Location
1 Chris A
1 Harry A
1 Phil A
2 Rick B
2 Johnny B
2 Jeff B
3 David C
Union All对Location列产生了问题,因为列的数量变得不同。我可以使用 null 作为 Worker 表的 Location。但是在经理表中有几个像位置这样的列。联合是正确的选择吗?
你需要连接工人表和经理表,从他们对应的经理那里得到工人的位置代码。然后你可以将其与经理表联合起来。
SELECT ManagerCode, Name, Location
FROM (
SELECT ManagerCode, Name, Location, 1 AS isManager
FROM Manager
UNION ALL
SELECT w.ManagerCode, w.Name, m.Locationm, 0 AS isManager
FROM Worker AS w
JOIN Manager AS m ON w.ManagerCode = m.ManagerCode
) AS x
ORDER BY ManagerCode, isManager DESC
经理表的 isManager
栏目用于将工人排列在其经理之后。