【问题标题】:Why do we have OUTER clause in LEFT JOIN?为什么我们在 LEFT JOIN 中有 OUTER 子句?
【发布时间】:2012-06-13 09:15:31
【问题描述】:

下面两个查询有什么区别

更新

此问题已在LEFT JOIN vs. LEFT OUTER JOIN in SQL Server 的类似问题中得到解答。

SELECT * FROM ca 
LEFT JOIN exam 
ON ca.subject = exam.subject

SELECT * FROM ca 
LEFT OUTER JOIN exam 
ON ca.subject = exam.subject

表格

Table 'CA'
--------------------
subject|score
----------------
ENG    |25
MTH    |34
BIO    |18


Table 'Exam'
--------------------
subject|score
----------------
ENG    |25

在 mysql, sqlserver 2008 中运行 2 个查询产生相同的结果。我没有在 Oracle 中测试。

subject | score1 | subject | score1
--------------------------------------
ENG       14       ENG       44
MTH       28       NULL      NULL
BIO       22       NULL      NULL

那个 OUTER 子句的目的是什么

【问题讨论】:

标签: mysql sql sql-server join


【解决方案1】:

没有区别。 OUTER 关键字是可选的。

【讨论】:

    【解决方案2】:

    在所有 LEFT JOIN 查询也是 LEFT OUTER JOIN 的意义上,它们是等价的。

    更多信息请参见http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joins

    【讨论】:

      【解决方案3】:

      LEFTLEFT OUTER没有区别; OUTER 关键字可以省略。

      【讨论】:

        【解决方案4】:

        在某些数据库中,LEFT JOIN 被称为 LEFT OUTER JOIN,所以它是一回事。关键字 OUTER 是可选的 所以,提醒自己这是一个外连接。

        关键字 LEFT、RIGHT 或 FULL 是强制性的。左、右和全外连接是唯一的外连接类型。当然,关键字 JOIN 是强制性的。

        【讨论】:

          【解决方案5】:

          有四种类型的连接:内连接、左外连接、右外连接和全外连接。左连接、右连接和全连接只是外连接类型的缩写。

          【讨论】:

          • 还有anti-joins、semi-joins,然后就是equijoins和non-equijoins的区别。
          猜你喜欢
          • 2011-01-30
          • 2010-11-26
          • 1970-01-01
          • 2011-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-09
          相关资源
          最近更新 更多