如果使用左外联接(选择表A左外联接表B),当数据与左表(表A)不匹配时,我可以在右表(表B)中具有null值。如果我更改选择查询顺序(选择表B左外联接表A),现在我可以在表A中有空数据。因此,使用左外联接可以执行相同的操作。那么,右外联接有什么用呢?请帮我解决这个问题。
left outer join
和right outer join
在某种意义上是多余的。您可以只使用其中一个来编写查询。
提供它们的原因与提供<
和>
的原因相同。有时,对于给定的逻辑运算,其中一个更有意义。
就我而言,我努力只使用join
和left outer join
编写查询。left outer join
对我来说更有意义,因为它说"保留第一个表中的所有行,以及其他表中的匹配行"。这并不意味着right outer join
是错误的,只是不同的人以不同的方式理解事物。
区别很简单——在左外部联接中,无论"右"表中是否有匹配的列,都将显示"左"表中的所有行。在右外联接中,无论"左"表中是否有任何匹配列,都将显示"右"表中的所有行。希望我们上面给出的例子也能澄清这一点。
我应该使用右外联接还是左外联接?事实上,这并不重要。右外部联接不添加左外部联接没有的任何功能,反之亦然。要想从右外联接和左外联接中获得相同的结果,只需切换表在SQL语句中的显示顺序。
从表A LEFT JOIN表B中选择*与从表B中选择*RIGHT JOIN表A
SELECT*FROM TableA LEFT JOIN TableB表A中的所有行和表B中的匹配行。如果在表B中没有找到匹配的行,则表B的所有列都将被空替换
示例:TableA行1.2.3.表B行2.3.4
表A LEFT JOIN表B将给出以下元组:(1个空)(2 2)(3 3)
表A RIGHT JOIN表B将给出以下元组:(2 2)(3 3)(空4)
表A OUTER JOIN表B包含以下元组:(1个空)(2 2)(3 3)(NULL 4)