這兩加入會給我同樣的結果:差異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實現中有所不同嗎?
這兩加入會給我同樣的結果:差異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實現中有所不同嗎?
它們在功能上等同,但INNER JOIN
可以是一個有點清晰閱讀,特別是如果查詢其他參加包含在它的類型(即LEFT
或RIGHT
或CROSS
)。
不,沒有區別,純syntactic sugar。
OUTER JOINs
字
"OUTER"
同樣是可選的,其LEFT
或RIGHT
關鍵字,使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
INNER JOIN是如果您在使用單詞JOIN時沒有指定類型,則爲默認值。
您還可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在這種情況下OUTER字可選, 或者您可以指定CROSS JOIN。
OR
對於內部聯接,語法是:
SELECT ...
FROM表A
[INNER] JOIN表B(換言之, 「INNER」關鍵字是可選 - 結果與 相同或不同)
它在不同的SQL實現之間有所不同嗎?
是的,MS Access不允許只是join
它需要inner join
。
圖片提供:由於其他答案已經說明存在無差異你的榜樣。
語法的相關位爲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;
的例子見這樣的問題: –
2009-02-19 14:50:00
作爲附帶說明:CROSS JOIN是一個很高興知道連接類型(它不同於INNER JOIN)。 – Serge 2013-05-14 11:57:02
應該重新打開,因爲其他問題表示爲等效的不是。 OP詢問在寫入JOIN或INNER JOIN時是否有區別 – 2014-07-02 12:06:27