SQL中外连接的* =和= *发生了什么变化?

时间:2011-10-28 20:33:27

标签: sql operators obsolete

我很好奇为什么*=的{​​{1}}运算符和'右外连接'的'= *'被取出SQL标准,或者至少不受SQL支持服务器2005年和?我已经阅读了关于这个特定运算符的一些其他帖子,并了解它可以给出一些意想不到的结果。但是如果它在语义上是等价的,我会认为在必须连接多个表时使用它会更容易。如果有的话,我宁愿使用此运算符来动态创建SQL查询,而不是尝试获取正确的单词顺序,如:

left outer join

,其中

FROM accounts 
LEFT OUTER JOIN customers 
ON accounts.accountnum = customers.accountnum 
LEFT OUTER JOIN products 
ON customers.accountnum = products.accountnum 
AND customers.id = products.customerid  

似乎更容易解析。

但回到现实世界,如果他们没有表现出“真正的”外部联接,这些运营商的想法是什么? Short Hand 这个词意味着它应该做同样的事情,但显然不是这种情况。

3 个答案:

答案 0 :(得分:5)

SQL Server MVP K. Brian Kelley在这里做了很好的解释:Why SQL Server 2005 Doesn't Permit Non-ANSI Style OUTER JOINs

答案 1 :(得分:1)

我认为他们没有被淘汰。我认为他们永远不会参与其中。它们只是供应商遵循的惯例,直到SQL-92出现并且供应商认为值得实施。

答案 2 :(得分:1)

谷歌搜索Chris Date论文,“没有空洞和更少眼泪的外部加入”,这是在SQL-92标准之前。虽然我在网上找不到免费的副本,但我找到了一份分析论文的文档,并提供了SQL中外连接的一个很好的盆栽历史。请注意,现在Date是这种查询的关系值属性,并且会促使您通常避免使用外连接;)