2013-08-22 86 views
0

我试图在谷歌搜索。但是每个人都在解释关于内连接的问题,当涉及外连接时,他们包括完整的外连接/左/右。我只想知道内连接和外连接之间的区别。内部和外部连接sql server有什么区别

+1

http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg – Paddyd

回答

0

内部联接是列在两个表中匹配的表中匹配,并且只会在条件为真时返回结果。即使没有匹配,外部联接也会返回结果,并且当联接条件不满足时将返回空值。

Sql fiddle link

0

内加入

“从匹配连接条件的两个表获取所有行。”

外部联接

“从[左/右]表中获取所有的行,并加入匹配来自其他表的连接条件的任何行。”

全外连接

“获取所有从两个表中的行,并加入任何行到每个匹配连接条件。”

在外部连接,如果你说的情况:

SELECT m.*, mo.* 
FROM myTable m 
LEFT OUTER JOIN myOtherTable mo ON m.Id = mo.myTableId 

这将返回从myOtherTable全部来自左表(myTable的)和任何匹配的行,行。来自myTable的任何行不匹配都将具有mo。*的值,设置为NULL

在内部连接的情况下,如果你说:

SELECT m.*, mo.* 
FROM myTable m 
INNER JOIN myOtherTable mo ON m.Id = mo.myTableId 

您只有符合这两个表中的行,所以,例如,如果你有一个myTable的记录ID为15,没有myOtherTable记录与myTableId的15则没有行与标识15

被退回myTable的还有一点要认识到我如果有多个匹配,则会返回多行。所以,如果你有2项myOtherTablemyTableId的10那么myTable的一行10 ID将被复制,一行从myOtherTable的第一条记录加入,和一个与第二个记录。