完全外加入vs.完全加入


81

只是玩弄查询和示例以更好地理解联接。我注意到在SQL Server 2008中,以下两个查询给出的结果相同:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name

SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name

它们是执行完全相同的操作以产生相同的结果,还是在更复杂的示例中遇到不同的结果?这只是可互换的术语吗?


2
是的,这两个查询在SQL Server 2008 R2中给我相同的结果。
CptSupermrkt

Answers:



36

Microsoft®SQL Server™2000将这些SQL-92关键字用于FROM子句中指定的外部联接:

  • 左外联接或左联接

  • 正确的外部联接或正确的联接

  • 完全外部联接或完全联接

MSDN

full outer joinfull join两个表中返回所有行,匹配了地方匹配就可以制备和配售排NULL在没有匹配的行存在的地方秒。


11

确实,某些数据库可以识别OUTER关键字。有些没有。可以识别的地方通常是可选关键字。几乎总是FULL JOIN和FULL OUTER JOIN做完全相同的事情。(我想不出一个他们没有的例子。其他人能想到一个吗?)

这可能会让您感到疑惑,“如果它没有任何意义,为什么甚至会成为关键字?” 答案归结为编程风格。

在过去,程序员努力使他们的代码尽可能紧凑。每个字符都意味着更长的处理时间。我们使用了1、2和3个字母变量。我们用了两位数的年份。我们消除了所有不必要的空白。有些人仍然以这种方式编程。这不再是处理时间了。更多有关快速编码。

现代程序员正在学习使用更多描述性变量,并在其代码中添加更多注释和文档。使用诸如OUTER之类的多余单词,可以确保其他阅读代码的人有更多的时间来理解它。模棱两可将减少。这种样式对于将来必须维护该代码的人们而言更具可读性和友善性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.