SQL OUTER JOIN 外连接
时间:2018-11-15 17:46:46 来源:igfitidea点击:
在本教程中,我们将学习如何使用SQL外部连接OUTER JOIN
,包括左外部连接、右外部连接和完全外部连接。
SQL OUTER JOIN – 左外连接
SQL左外连接也称为SQL左连接。
假设我们要连接两个表:A和B。SQL 左连接将返回左表(A)中的所有行和右表(B)中的所有匹配行。
这意味着SQL左连接的结果总是包含左表中的行。
下面演示了连接两个表table_A和table_B的SQL左外连接语法:
SELECT column1, column2... FROM table_A LEFT JOIN table_B ON join_condition WHERE row_condition
SQL OUTER JOIN – 左外连接示例
以下查询选择所有客户及其订单:
SELECT c.customerid, c.companyName, orderid FROM customers c LEFT JOIN orders_test o ON o.customerid = c.customerid ORDER BY orderid
列出了客户表中的所有行。如果在orders表中没有为客户表中的行找到匹配的行,则orders表中的orderid列将使用空值填充。
SQL OUTER JOIN – 右外部连接
SQL右外部连接也称为SQL右连接。
SQL 右外部联接将返回右表中的所有行和左表中找到的所有匹配行。
SQL右外部联接的语法如下:
SELECT column1, column2... FROM table_A RIGHT JOIN table_B ON join_condition WHERE row_condition
SQL OUTER JOIN – 右外连接示例
下面的示例演示SQL右外部联接:
查询返回orders表中的所有行和customers表中找到的所有匹配行。
SELECT c.customerid, c.companyName, orderid FROM customers c RIGHT JOIN orders_test o ON o.customerid = c.customerid ORDER BY orderid
SQL OUTER JOIN – 完全外部连接
SQL完全外部联接的语法如下:
SELECT column1, column2... FROM table_A FULL OUTER JOIN table_B ON join_condition WHERE row_condition
SQL完全外部连接将返回:
- 左表table_A中的所有行。
- 右表table_B中的所有行。
- 以及两个表中所有匹配的行。
一些数据库管理系统不支持SQL完全外部连接语法,例如MySQL。因为SQL完全外部连接返回的结果集是左连接和右连接的组合结果。因此,可以使用左连接和右连接以及UNION运算符轻松模拟SQL完全外部连接,如下所示:
SELECT column1, column2... FROM table_A LEFT JOIN table_B ON join_condition UNION SELECT column1, column2... FROM table_A RIGHT JOIN table_B ON join_condition
SQLOUTER JOIN – 完全外部连接示例
SELECT c.customerid, c.companyName, orderid FROM customers c FULL OUTER JOIN orders o ON o.customerid = c.customerid ORDER BY orderid