2009-02-19 1757 views
708

這兩加入會給我同樣的結果:差異JOIN和INNER JOIN

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK 

VS

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK 

是否有性能或聲明,否則有什麼區別?

它在不同的SQL實現中有所不同嗎?

+0

的例子見這樣的問題: 2009-02-19 14:50:00

+1

作爲附帶說明:CROSS JOIN是一個很高興知道連接類型(它不同於INNER JOIN)。 – Serge 2013-05-14 11:57:02

+5

應該重新打開,因爲其他問題表示爲等效的不是。 OP詢問在寫入JOIN或INNER JOIN時是否有區別 – 2014-07-02 12:06:27

回答

789

它們在功能上等同,但INNER JOIN可以是一個有點清晰閱讀,特別是如果查詢其他參加包含在它的類型(即LEFTRIGHTCROSS)。

195

不,沒有區別,純syntactic sugar

+11

我不會稱這種語法糖。也許是「默認」連接類型,「簡寫」或「別名」。 – mk12 2015-06-24 13:32:18

+34

*在計算機科學中,語法糖是一種編程語言中的語法,旨在使事情更容易閱讀或表達*。我相信省略「INNER」的能力屬於這個定義。 – Quassnoi 2015-06-24 13:35:47

43
OUTER JOINs"OUTER"

同樣是可選的,其LEFTRIGHT關鍵字,使JOIN一個"OUTER" JOIN

但是由於某種原因,我總是用"OUTER"作爲LEFT OUTER JOIN永不LEFT JOIN,但我從來沒有使用INNER JOIN而我只是用"JOIN"

SELECT ColA, ColB, ... 
FROM MyTable AS T1 
    JOIN MyOtherTable AS T2 
     ON T2.ID = T1.ID 
    LEFT OUTER JOIN MyOptionalTable AS T3 
     ON T3.ID = T1.ID 
108

INNER JOIN = JOIN

INNER JOIN是如果您在使用單詞JOIN時沒有指定類型,則爲默認值。

您還可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在這種情況下OUTER字可選, 或者您可以指定CROSS JOIN。

OR

對於內部聯接,語法是:

SELECT ...
FROM表A
[INNER] JOIN表B

(換言之, 「INNER」關鍵字是可選 - 結果與 相同或不同)

37

它在不同的SQL實現之間有所不同嗎?

是的,MS Access不允許只是join它需要inner join

591

只要輸入JOIN默認執行INNER JOIN

對於所有的人,一個畫面有時價值超過字的百位:中CodeProject


20

enter image description here

圖片提供:由於其他答案已經說明存在無差異你的榜樣。

語法的相關位爲documented here

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ] 
    JOIN 

顯示,所有的都是可選的。該頁面進一步闡明:

INNER指定返回所有匹配行對。從兩個表中丟棄 不匹配的行。 未指定連接類型時,此 是默認

語法也確實表明,有一次,此時INNER是,雖然需要。指定聯接提示時。

參見下面

CREATE TABLE T1(X INT); 
CREATE TABLE T2(Y INT); 

SELECT * 
FROM T1 
     LOOP JOIN T2 
     ON X = Y; 

SELECT * 
FROM T1 
     INNER LOOP JOIN T2 
     ON X = Y; 

enter image description here