左连接与右连接


左连接和右连接之间的主要区别可以在表的连接方式上观察到。

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

左连接的工作

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

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

句法

以下是 SQL 中 Left Join 的基本语法 -

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

例子

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

左连接与右连接

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

右连接的工作

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

句法

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

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

例子

现在,在此示例中,对相同的表执行 Right Join 操作。在这里,我们从右表开始连接;因为右表不包含与 Alex 的行匹配的记录值,所以该行从最终表中被丢弃。

左连接与右连接

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

左连接与右连接

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

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

正如我们从摘要中可以观察到的,左连接和右连接之间没有很大的差异。它们之间的每一个差异都归零到表的连接方式和连接角度。