Oracle Outer Join外连接

外连接类似于 equijoin,但它也从表中获取不匹配的行。它按 Oracle 9i ANSI/ISO 1999 标准分为左外连接、右外连接和全外连接。

一、Oracle Left Outer Join左外连接

Left Outer Join 左外连接返回在 ON 条件中指定的左(第一个)表中的所有行,并且只返回右(第二个)表中满足连接条件的那些行。

语法:

SELECT columns  
FROM table1  
LEFT [OUTER] JOIN table2  
ON table1.column = table2.column;   

示例:

在这个例子中,我们正在对已经创建的表执行左外连接:suppliers表和order1表。

以下示例将返回表 suppliers表 中的所有记录。并且只有表中的那些记录order1表连接字段相等的地方。

SELECT suppliers.supplier_id, suppliers.supplier_name, order1.order_number  
FROM suppliers  
LEFT OUTER JOIN order1  
ON suppliers.supplier_id = order1.supplier_id;  

输出结果为:

二、Oracle Right Outer Join右外连接

Right Outer Join 返回 ON 条件中指定的右侧表中的所有行,并且仅返回满足连接条件的另一个表中的那些行。

SELECT columns  
FROM table1  
RIGHT [OUTER] JOIN table2  
ON table1.column = table2.column;   

示例:

在这个例子中,我们正在对已经创建的表执行右外连接:suppliers表和order1表

以下示例将返回 order1 表中的所有行,并且仅返回符合连接条件的供应商表中的那些行。

SELECT order1.order_number, order1.city, suppliers.supplier_name  
FROM suppliers  
RIGHT OUTER JOIN order1  
ON suppliers.supplier_id = order1.supplier_id;  

输出结果为:

三、Oracle Full Outer Join全连接

Full Outer Join 返回左侧表和右侧表中的所有行。它在不满足连接条件的地方放置 NULL。

语法:

SELECT columns  
FROM table1  
FULL [OUTER] JOIN table2  
ON table1.column = table2.column;   

示例:

在这个例子中,我们正在对已经创建的表执行完全外连接:suppliers表和order1表

以下示例将返回来自 suppliers表 的所有行 表和来自 order1表 的所有行 表,只要不满足连接条件,它就会放置 NULL 值。

SELECT suppliers.supplier_id, suppliers.supplier_name, order1.order_number  
FROM suppliers  
FULL OUTER JOIN order1  
ON suppliers.supplier_id = order1.supplier_id;  

输出结果为:

热门文章

优秀文章