2013-02-27 79 views
6

我有一段時間才知道如何使用INNER JOIN,而且完全不知道LEFT/RIGHT(OUTER)JOIN的作用。雖然,正如我剛纔所讀到的,但我看不出右側有什麼目的?右連接等於左連接?

在我看來,這是相同的反向LEFT JOIN

如果我們按照我的例子:

SELECT t1.* FROM table1 t1 RIGHT JOIN table2 t2 ON t2.value = t1.value 

將是相同的:

SELECT t2.* FROM table2 t2 LEFT JOIN table1 t1 ON t1.value = t2.value 

這是正確的,還是我我錯過了什麼?

+0

http://stackoverflow.com/a/248403/40822 – dotjoe 2013-02-27 19:46:06

+0

是的,我發佈前做了一些糟糕的搜索,我的壞!顯然,不僅有一個重複的... – Colandus 2013-02-27 19:54:30

+0

SQL委員會有可能創建了RIGHT和LEFT OUTER JOIN,以便SQL程序員可以參與關於某些語言功能(除了NULL的有效性以外)的無限辯護辯論! :-) – 2013-02-27 19:58:56

回答

2

是的,你說得對。從Wikipedia

右外連接(或右連接)非常類似於左外 加入,除了與逆轉表的處理。從「 」的每一行,「右」表(B)至少會出現一次。 如果不存在與「左」表(A)匹配的行,則對於那些在B中不匹配的記錄,NULL將出現在來自A的列中的 中。右 外連接返回右表中的所有值並匹配 來自左表的值(在沒有匹配的情況下,爲NULL)謂詞爲NULL)。

0

Right join相當於反向left join

這並沒有使它無用。有些人可能更喜歡這樣寫他們的查詢。我不是那些人中的一個。就個人而言,我幾乎從不使用正確的外連接。而且,沒有查詢應該有左和右外連接。

有可能是如果有人寧願情況:

select . . . 
from table t right outer join 
     (very 
     long 
     subquery 
     here 
    ) t2 
     on . . . 

爲了把表第二。

+0

對於令人不安的標題感到抱歉! :p – Colandus 2013-02-27 19:52:59