SQL FULL OUTER JOIN

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 查询对 CustomersOrders 两个表执行 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;

这里,

  • table1table2 是要连接的表
  • column1column2 是两个表中的相关列

示例: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_idfirst_name 列(来自 Customers 表)以及 amount 列(来自 Orders 表)。

结果集将包含两个表中的所有行,无论 customer_idCustomers 表的)和 customerOrders 表的)之间是否存在匹配。

How to use FULL OUTER JOIN in SQL
示例:SQL FULL OUTER JOIN

带有 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 命令对 CategoriesProducts 表执行完全外连接,同时分别将别名 CP 分配给它们。


推荐阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战