左外连接和右外连接之间的实时使用和差异

时间:2013-07-07 12:31:10

标签: sql

如果使用左外连接(选择表A左外连接表B),当数据与左表(表A)不匹配时,我可以在右表(表B)中具有空值。如果我更改了选择查询顺序(选择表B左外连接表A),现在我可以在表A中使用空数据。因此,可以使用左外连接执行相同的操作。那么,右外连接的用途是什么? 请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

从某种意义上说,

left outer joinright outer join是多余的。您只能使用其中一个来编写查询。

提供它们的原因与提供<>的原因相同。有时一个或另一个对于给定的逻辑操作更有意义。

至于我,我努力只使用joinleft outer join来编写查询。 left outer join对我来说更有意义,因为它说“保留第一个表中的所有行,以及其他表中的匹配行”。这并不意味着right outer join是错误的,只是不同的人以不同的方式理解事物。

答案 1 :(得分:0)

区别很简单 - 在左外连接中,无论“右”表中是否存在任何匹配的列,都将显示“左”表中的所有行。在右外连接中,无论“左”表中是否存在任何匹配的列,都将显示“右”表中的所有行。希望我们上面给出的例子也有助于澄清这一点。

我应该使用右外连接还是左外连接? 实际上,没关系。右外连接不会添加左外连接尚未具有的任何功能,反之亦然。要从右外连接和左外连接获得相同结果,您只需切换表在SQL语句中出现的顺序。

答案 2 :(得分:-1)

SELECTA来自TableA LEFT JOIN TableB 与...一样 SELECT *来自TableB RIGHT JOIN TableA

SELECT * FROM TableA LEFT JOIN TableB TableA中的所有行和TableB中的匹配行。如果在TableB中找不到匹配的行,那么TableB的所有列将被替换为null

实施例: TableA行 1 2 3 表B行 2 3 4

TableA LEFT JOIN TableB将给出以下元组: (1个NULL) (2 2) (3 3)

TableA RIGHT JOIN TableB将给出以下元组: (2 2) (3 3) (NULL 4)

TableA OUTER JOIN TableB以下元组: (1个NULL) (2 2) (3 3) (NULL 4)