我很好奇为什么*=
的{{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 这个词意味着它应该做同样的事情,但显然不是这种情况。
答案 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是这种查询的关系值属性,并且会促使您通常避免使用外连接;)