我现在有两张表存储数据。它们与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。在这一点上它并没有。希望这是有道理的!
答案 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