为什么我们在LEFT JOIN中有OUTER子句?

时间:2012-06-09 18:46:39

标签: mysql sql sql-server join

以下2个查询之间有什么区别

更新

这个问题已在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

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

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

该OUTER条款的目的是什么

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

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

有关详细信息,请参阅http://en.wikipedia.org/wiki/Join_(SQL)#Outer_joins

答案 2 :(得分:1)

LEFTLEFT OUTER之间没有区别; OUTER关键字可能会被省略。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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