簡體   English   中英

在Oracle中沒有相同鍵的情況下聯接兩個表

[英]Join two tables without having same key in oracle

假設我有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獲取所有記錄?

這稱為完全外部聯接

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函數僅返回不為空的第一個參數。 在這種情況下,如果a.id存在,它將被返回。 否則,b.id將是。 由於兩列之一不得為null(如果不存在,它們將始終匹配),因此這將始終返回正確的ID。 將其彈出到名為“ id”的結果列中,您將獲得期望的結果。

select a.id, a.name, b.status
from a 
full outer join b on a.id = b.id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM