左连接返回加入值

时间:2016-04-12 18:39:06

标签: sql sql-server

我现在有两张表存储数据。它们与ID值相关。如何返回表1中的所有值,包括主值,即使它具有匹配项。这是我的基本查询。

Select MFG.mfgname, SS.subsysname
From Manufacturers MFG left join SubSystem SS
On MFG.id = SS.mfgid
Order by MFG.mfgname, SS.subsysname

以下是表格

    MFG Table       
id  mfgname 
1   ABB 
2   Siemens 
3   Vipa    
4   Visolux 

SubSystem table     
id  mfgid   subsysname
1   1   ABB Drives
2   1   ABB Robots
3   1   Advant OCS
4   2   Simatic S5
5   2   Simatic S7
6   3   Vipa System

最后是结果和期望的结果。

Results 
mfgname subsysname
ABB ABB Drives
ABB ABB Robots
ABB Advant OCS
Siemens Simatic S5
Siemens Simatic S7
Vipa    Vipa System
Visolux NULL

Desired Results 
mfgname subsysname
ABB NULL
ABB ABB Drives
ABB ABB Robots
ABB Advant OCS
Siemens NULL
Siemens Simatic S5
Siemens Simatic S7
Vipa    NULL
Vipa    Vipa System
Visolux NULL

所需结果还将返回带有空子系统名称的ABB,Siemens和Vipa mfgs。在这一点上它并没有。希望这是有道理的!

1 个答案:

答案 0 :(得分:2)

您应该可以使用UNION执行此操作。

SELECT  MFG.mfgname,
        SS.subsysname
FROM    Manufacturers MFG
        LEFT JOIN SubSystem SS ON MFG.id = SS.mfgid
UNION
SELECT  MFG.mfgname,
        NULL
FROM    Manufacturers MFG
ORDER BY MFG.mfgname,
        SS.subsysname