假设我有2个表A和B,并希望加入这些表,
A:
---------------
id | name |
---------------
1 | jack |
2 | hanna |
3 | jack |
4 | hanna |
B:
---------------
id | status |
---------------
1 | online |
3 | offline|
5 | away |
如何连接这两个表以获得如下输出
-----------------------
id | name | Status
-----------------------
1 | jack | online
2 | hanna | (null)
3 | jack | offline
4 | hanna | (null)
5 | (null) | away
我尝试过像
这样的外连接A.id = B.id(+)
它只显示仅存在A.id的条目,但是如何从A和B获取所有记录?
答案 0 :(得分:1)
这称为full outer join:
SELECT NVL(a.id, b.id) as id, a.name, b.status
FROM A a FULL OUTER JOIN B b ON (a.id = b.id)
要避免两个id列或可能为NULL的id列,请使用NVL。 NVL函数只返回第一个非null的参数。在这种情况下,如果存在a.id,则返回它。否则,b.id将是。由于两列中的一列不能为空(如果它们不存在,它们将始终匹配),这将始终返回正确的id。将其弹出到名为“id”的结果列中,您将获得所期望的结果。
答案 1 :(得分:0)
select a.id, a.name, b.status
from a
full outer join b on a.id = b.id;