Sql 简明教程

Left Join vs Right Join

左联接和右联接的主要区别在于联接表的方式。

它们都是外联接的类型;也就是说,它们保留一张表中不匹配的行,并丢弃另一张表中不匹配的行。左联接保留左表中不匹配的行,而右联接保留右表中不匹配的行。

Working of Left Join

SQL 中的 Left JoinLeft Outer Join 会合并两个或更多表,其中第一个表按原样返回;但仅从后续表中返回与第一个表有对应项的记录。

如果 ON 子句与后续表中与第一个表中的行的记录匹配为零,左联接仍将返回第一个表中的这些行,但在右侧表的每一列中都为 NULL。

Syntax

以下是 SQL 中左联接的基本语法 -

SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

Example

下面的示例演示了两个相关表上的左联接操作。这里,第一个表包含薪资信息,而第二个表包含婚姻状况信息。由于 Alex 的状态未知,因此未记录在表中。

ljvrj1

当两个表使用左联接查询联接时,由于没有记录与 Alex 的状态匹配,因此该值在最终表中记录为 NULL。

Working of Right Join

SQL 中的右联接或右外联接返回右侧表中的所有行,即使在左侧表中没有匹配项。这意味着,如果 ON 子句与右侧表中的记录在左侧表中匹配为 0(零)个记录;右联接仍将返回右侧表中的行,但在左侧表的每一列中都会有 NULL 值。

Syntax

以下是 SQL 中右联接的基本语法 −

SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Example

现在在这个示例中,对相同的表执行右联接操作。这里,我们从右侧表开始联接;由于右侧表不包含与 Alex 行匹配的记录值,因此从最终表中丢弃该行。

ljvrj2

最终表仅包含两行,因为右侧表仅包含两行。

Left Join Vs Right Join

让我们在下面的表中总结左联接和右联接之间的所有差异 −

Left Join

Right Join

左联接将第一个表或左侧表的数据与第二个表中的数据匹配。如果数据匹配,则会合并记录;否则,将记录 NULL。

右联接将第二个表或右侧表的数据与第一个表中的数据匹配。如果数据匹配,则会合并记录;否则,将记录 NULL。

如果第一个表比第二个表少行,则会丢弃来自第二个表的额外的未匹配行。

如果第二个表比第一个表少行,则会丢弃来自第一个表的额外的未匹配行。

此联接也称为左外联接

此联接也称为右外联接

在 Transact SQL 中使用 *=,而不是使用 LEFT JOIN 或 LEFT OUTER JOIN 查询。

在 Transact SQL 中使用 =*,而不是使用 RIGHT JOIN 或 RIGHT OUTER JOIN 查询。

正如我们从总结中可以观察到的,左联接和右联接没有什么太大的不同。它们之间的每个差异都会归结为连接表和连接观点的方式。