2013-08-22 84 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的第一條記錄加入,和一個與第二個記錄。