左连接 vs 右连接



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

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

左连接的工作原理

左连接或 SQL 中的左外连接组合两个或多个表,其中第一个表按原样返回;但是,只有在第一个表中具有对应项的记录才会从后续表中返回。

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

语法

以下是 SQL 中左连接的基本语法:

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

示例

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

Left Join Vs Right Join

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

右连接的工作原理

SQL 中的右连接或右外连接查询返回右表中的所有行,即使左表中没有匹配项也是如此。这意味着如果 ON 子句在左表中与右表中的记录匹配的记录为 0(零),则右连接仍将在结果中返回右表的行,但在左表中的每一列中都为 NULL 值。

语法

以下是 SQL 中右连接的基本语法:

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

示例

在本例中,对同一张表执行右连接操作。在这里,我们从右表开始连接;由于右表不包含与 Alex 行匹配的记录值,因此该行将从最终表中丢弃。

Left Join Vs Right Join

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

左连接与右连接

让我们在下表中总结左连接和右连接之间的所有区别:

左连接 右连接
左连接将第一个表或左表的数据与第二个表中的数据匹配。如果数据匹配,则组合记录;否则,记录为 NULL。右连接将第二个表或右表的数据与第一个表中的数据匹配。如果数据匹配,则组合记录;否则,记录为 NULL。
如果第一个表的行数少于第二个表,则丢弃第二个表中多余的不匹配行。 如果第二个表的行数少于第一个表,则丢弃第一个表中多余的不匹配行。
此连接也称为左外连接 此连接也称为右外连接
在 Transact SQL 中,使用 *= 代替使用 LEFT JOIN 或 LEFT OUTER JOIN 查询。 在 Transact SQL 中,使用 =* 代替使用 RIGHT JOIN 或 RIGHT OUTER JOIN 查询。

从总结中我们可以看出,左连接和右连接之间的差异并不广泛。它们之间的每一个区别都归结于连接表的方式和连接的视角。

广告