完全外部加入与完全加入

Cpt*_*rkt 72 sql t-sql join sql-server-2008

只需使用查询和示例来更好地了解联接.我注意到在SQL Server 2008中,以下两个查询给出了相同的结果:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)

这些是完全相同的动作产生相同的结果,还是会在更复杂的例子中遇到不同的结果?这只是可互换的术语吗?

Joh*_*Woo 87

实际上他们是一样的.LEFT OUTER JOIN与...相同LEFT JOIN并且RIGHT OUTER JOIN相同RIGHT JOIN.这是比较丰富的信息方式INNER Join.

有关详细信息,请参阅此Wikipedia文章.

  • 很好,谢谢.我遇到的这么多教程都是根据自己的风格使用这些教程,而没有注意到它们是一样的. (2认同)
  • 联接的可视化表示:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins (2认同)

Lio*_*ion 30

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

  • LEFT OUTER JOIN或LEFT JOIN

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

  • 完全外部加入或完全加入

来自MSDN

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


Mar*_*inM 8

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

这可能会让你感到疑惑,"如果它没有任何意义,为什么它甚至会成为一个关键词呢?" 答案归结为编程风格.

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

现代程序员正在学习使用更多描述性变量,并在代码中添加更多备注和文档.使用像OUTER这样的额外词语可以确保阅读代码的其他人更容易理解它.模糊性会减少.对于将来必须维护该代码的人来说,这种风格更具可读性和更好的性能.