SQL LEFT OUTER JOIN

2025年8月2日 | 阅读 4 分钟

SQL 中的 LEFT OUTER JOIN 也称为 LEFT JOIN。它用于合并来自多个表的数据。它用于获取左表的所有记录以及右表中匹配的记录。如果右表中没有匹配的行,则返回 NULL 值。

语法

参数

SELECT: SELECT 是一个 SQL 语句,用于指定我们要从中检索数据的列。

t1.column, t2.column:它们是我们指定要从 table1 和 table2 显示的列的名称。

FROM:这是一个 SQL 关键字,用于选择表。

table1 t1:这表示 table1 是左表,t1 是可选的,但我们可以将其用作引用的别名。

LEFT OUTER JOIN:这是连接类型,它返回左表的所有行和右表中匹配的行。

table2:这指定了右表。

ON t1.common_column = t2.common_column:这是一个连接条件,它使用两个表中的公共列来匹配行。

SQL 中 LEFT OUTER JOIN 的示例

让我们看一些将使用 LEFT OUTER JOIN 并理解其功能的示例。

示例 1

要执行左外连接,我们将首先创建一个数据库和表,然后我们将在表上执行连接操作。

步骤 1:创建数据库

步骤 2:使用数据库

步骤 3:构造 "Actors" 表并插入数据。

创建 "Actors" 表

向其中插入数据

显示表

输出

actor_idactor_name
1Leonardo DiCaprio
2Scarlett Johansson
3Tom Cruise
4Emma Stone
5Dwayne Johnson

步骤 4:创建 "Movies" 表并插入数据。

创建 "Movies" 表

向 "Movies" 中插入数据

查询显示表

输出

movie_idactor_idmovie_title
11Inception
21The Revenant
32Black Widow
43Top Gun: Maverick
54Cruella

步骤 5:编写查询以实现 LEFT OUTER JOIN

输出

actor_namemovie_title
Leonardo DiCaprioInception
Leonardo DiCaprioThe Revenant
Scarlett JohanssonBlack Widow
Tom CruiseTop Gun: Maverick
Emma StoneCruella
Dwayne JohnsonNULL

说明

我们创建了两个表,ActorsMovies。在 Actors 表中,我们存储了演员的详细信息,在 Movies 表中,我们存储了电影的详细信息。两个表通过外键链接。我们使用了 LEFT OUTER JOIN,它会返回 Actors 表(左表)中的所有演员。如果一个演员出现在 Movies 表(右表)中,则会显示他们的电影,否则 movie_title 将为 NULL。

结论

SQL 中的 LEFT OUTER JOIN 是一种用于获取两个表合并数据的操作。当我们需要从一个表中检索完整信息,并且只检索与另一个表匹配的信息时,此连接非常有用。

常见问题

1. 什么是 LEFT OUTER JOIN?

此连接返回左表的所有行以及右表中匹配的行。左表被认为是 LEFT OUTER JOIN 关键字之前指定的表,右表被认为是 LEFT OUTER JOIN 关键字之后指定的表。如果右表中没有匹配项,则返回 NULL 值。

2. LEFT OUTER JOIN 和 LEFT JOIN 有什么区别?

LEFT OUTER JOIN 和LEFT JOIN 之间没有实际区别。LEFT JOIN 只是 LEFT OUTER JOIN 的简写。它们都执行相同的连接操作,并且它们都可以互换使用。

3. 何时应使用 LEFT OUTER JOIN?

您可以出于以下原因使用 LEFT OUTER JOIN:

  • 当您想显示一个表中的所有记录,即使在相关表中没有匹配项,它仍然提供左表的所有记录,但右表的值为 NULL。
  • 当您想进行报告和分析时,LEFT OUTER JOIN 有助于创建包含相关表记录甚至所有表中没有匹配项的记录的综合报告。

4. 我可以在使用 LEFT OUTER JOIN 时过滤结果吗?

是的,您可以使用 WHERE 子句来过滤结果,该子句根据给定条件提供结果。

5. 我可以将 LEFT OUTER JOIN 与两个以上的表一起使用吗?

是的,您可以将此连接与两个以上的表一起使用。您可以链接多个 LEFT OUTER JOIN 子句来连接三个或更多表。首先,它将连接两个表,然后将结果表与第三个表连接,这意味着每个后续的 LEFT OUTER JOIN 将操作于前一个连接的结果。


下一个主题主键