这是我想要的一个例子.
我们有2个表 - 用户和部门
users:
id name d_id
1 Alice 1
2 Bob 1
departments:
id name
1 Sales
2 Support
Run Code Online (Sandbox Code Playgroud)
接下来,我写通常的右连接:
SELECT u.id, u.name, d.name AS d_name
FROM users u
RIGHT OUTER JOIN departments d ON u.d_id = d.id
Run Code Online (Sandbox Code Playgroud)
它返回:
id name d_name
-- -------- ---------
1 Alice Sales
2 Bob Sales
NULL NULL Support
Run Code Online (Sandbox Code Playgroud)
是否可以编写查询,返回下一个结果?
id name d_name
-- -------- ---------
1 Alice Sales
2 Bob Sales
NULL NULL Sales
NULL NULL Support
Run Code Online (Sandbox Code Playgroud)
你似乎想要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;
Run Code Online (Sandbox Code Playgroud)
第一个子查询不需要外连接.