SQL FULL OUTER JOIN
语句根据一个公共列连接两个表。它选择这些列中具有匹配值的记录以及两个表中剩余的行。
示例
-- full join Customers and Orders tables
-- based on their shared customer_id columns
-- Customers is the left table
-- Orders is the right table
SELECT Customers.customer_id, Customers.first_name, Orders.item
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer_id;
这里,SQL 查询对 Customers 和 Orders 两个表执行 FULL OUTER JOIN
。这意味着结果集包含两个表中的所有行,包括那些没有共同 customer_id 值的行。
FULL OUTER JOIN 语法
SQL FULL OUTER JOIN
语句的语法是
SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.column1 = table2.column2;
这里,
- table1 和 table2 是要连接的表
- column1 和 column2 是两个表中的相关列
示例:SQL OUTER JOIN
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer;
这里,SQL 命令选择 customer_id
和 first_name
列(来自 Customers
表)以及 amount
列(来自 Orders
表)。
结果集将包含两个表中的所有行,无论 customer_id
(Customers
表的)和 customer
(Orders
表的)之间是否存在匹配。

带有 WHERE 子句的 FULL OUTER JOIN
SQL FULL OUTER JOIN
语句可以包含一个可选的 WHERE 子句。例如,
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer
WHERE Orders.amount >= 500;
这里,SQL 命令连接两个表并选择 amount 大于或等于 500 的行。
带有 AS 别名的 SQL FULL OUTER JOIN
我们可以在 FULL OUTER JOIN
中使用 AS 别名,使我们的查询简短明了。例如,
-- use alias C for Categories table
-- use alias P for Products table
SELECT C.category_name, P.product_title
FROM Categories AS C
FULL OUTER JOIN Products AS P
ON C.category_id = P.cat_id;
这里,SQL 命令对 Categories 和 Products 表执行完全外连接,同时分别将别名 C 和 P 分配给它们。
推荐阅读