这是我想要的一个例子。
我们有2个表 - 用户和部门
users:
id name d_id
1 Alice 1
2 Bob 1
departments:
id name
1 Sales
2 Support
接下来,我写通常的正确加入:
SELECT u.id, u.name, d.name AS d_name
FROM users u
RIGHT OUTER JOIN departments d ON u.d_id = d.id
它返回:
id name d_name
-- -------- ---------
1 Alice Sales
2 Bob Sales
NULL NULL Support
是否可以编写返回下一个结果的查询?
id name d_name
-- -------- ---------
1 Alice Sales
2 Bob Sales
NULL NULL Sales
NULL NULL Support
答案 0 :(得分:6)
您似乎想要UNION ALL
:
SELECT u.id, u.name, d.name AS d_name
FROM users u JOIN
departments d
ON u.d_id = d.id
UNION ALL
SELECT NULL, NULL, d.name
FROM departments d
ORDER BY id NULLS LAST;
第一个子查询不需要外连接。
答案 1 :(得分:3)
使用UNION添加尚未列出的部门:
SELECT u.id, u.name, d.name AS d_name
FROM users u
RIGHT OUTER JOIN departments d ON u.d_id = d.id
UNION
SELECT NULL, NULL, d.name
FROM departments
答案 2 :(得分:1)
Select
T.id,
T.name,
CASE WHEN T.d_name IS NULL THEN d.name ELSE T.d_name END d_name
from (
SELECT
u.id,
u.name,
d.name AS d_name,
did
FROM Users u
RIGHT OUTER JOIN Departments d
ON u.did = d.id )T
FULL OUTER JOIN Departments d
ON T.did <> d.id