TOP

SQL FULL OUTER JOIN 关键字

SQL FULL OUTER JOIN 描述

如果表的左侧 (table1) 或右侧 (table2) 记录中有匹配项,则关键字 FULL OUTER JOIN 返回所有记录。


指令 FULL OUTER JOIN 和 FULL JOIN 是相同的。

FULL OUTER JOIN 语法

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition

SQL FULL JOIN

演示数据库

在本教程中,我们将使用著名的示例数据库“Northwind”。

以下是表“Customers”(“客户”)中的示例:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

以及表“Orders”(“订单”)中的示例:

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

SQL FULL OUTER JOIN 示例

以下 SQL 语句选择所有客户和所有订单:

Run SQLSELECT Customers.CustomerName, Orders.OrderID 
FROM Customers 
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
ORDER BY Customers.CustomerName

结果集中的示例可能如下所示:

CustomerName OrderID
Null 10309
Null 10310
Alfreds Futterkiste Null
Ana Trujillo Emparedados y helados 10308
Antonio Moreno Taquería Null
关键字 FULL OUTER JOIN 返回两个表中的所有匹配记录,无论另一个表是否匹配。 因此,如果“Customers”(“客户”)中的某些行在“Orders”(“订单”)中没有匹配项,或者“订单”中的某些行在“客户”中没有匹配项,则这些行也会被删除。将被列出。