是否有可能写出右外连接,它始终是空的左边部分?

Mik*_*iet 3 sql postgresql

这是我想要的一个例子.

我们有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)

Gor*_*off 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;
Run Code Online (Sandbox Code Playgroud)

第一个子查询不需要外连接.