如果使用左外连接(选择表A左外连接表B),当数据与左表(表A)不匹配时,我可以在右表(表B)中具有空值。如果我更改了选择查询顺序(选择表B左外连接表A),现在我可以在表A中使用空数据。因此,可以使用左外连接执行相同的操作。那么,右外连接的用途是什么? 请帮我解决这个问题。
答案 0 :(得分:1)
left outer join
和right outer join
是多余的。您只能使用其中一个来编写查询。
提供它们的原因与提供<
和>
的原因相同。有时一个或另一个对于给定的逻辑操作更有意义。
至于我,我努力只使用join
和left 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)