Gra*_*ham 4 sql t-sql sql-server-2008
我有类似SQL Server中的以下两个表:
Table1
MainID Descrip
1 tree
2 dog
3 blah
4 etc
Table2
SubID MainID SubDescrip
1 2 rover
2 2 fido
Run Code Online (Sandbox Code Playgroud)
我希望能够在具有匹配的MainID时从Table1和Table2中选择所有内容.
我想要的输出如下:
MainID Descrip SubID SubDescrip
1 tree NULL NULL
2 dog NULL NULL
2 dog 1 rover
2 dog 2 fido
3 blah NULL NULL
4 etc NULL NULL
Run Code Online (Sandbox Code Playgroud)
我可以使用外连接获得所需输出的第二行以外的所有输出,但是如何获得第二行呢?
换句话说,这个:
SELECT m.MainID, m.Descrip, s.SubID, s.SubDescrip
FROM Table1 m LEFT OUTER JOIN
Table2 s ON m.MainID = s.MainID
ORDER BY m.MainID, s.SubID
Run Code Online (Sandbox Code Playgroud)
给我这个:
MainID Descrip SubID SubDescrip
1 tree NULL NULL
2 dog 1 rover
2 dog 2 fido
3 blah NULL NULL
4 etc NULL NULL
Run Code Online (Sandbox Code Playgroud)
但我也想要这个:
2 dog NULL NULL
Run Code Online (Sandbox Code Playgroud)
使用 UNION
SELECT m.MainID,
m.Descrip,
s.SubID,
s.SubDescrip
FROM Table1 m
LEFT OUTER JOIN Table2 s
ON m.MainID = s.MainID
UNION
SELECT MainID,
Descrip,
NULL SubID,
NULL SubDescrip
FROM Table1
ORDER BY MainID, SubID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10032 次 |
| 最近记录: |