Разница между 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?

Комментарии к вопросу (2)
Решение

Функционально они эквивалентны, но INNER JOIN может быть немного более понятным для чтения, особенно если в запрос включены другие типы присоединения (например, LEFT или RIGHT или CROSS).

Комментарии (5)

Нет, никакой разницы, чистый [синтаксический сахар] (http://en.wikipedia.org/wiki/Syntax_sugar).

Комментарии (5)

ВНУТРЕННЕЕ СОЕДИНЕНИЕ = ПРИСОЕДИНЯЙТЕСЬ К

внутреннее соединение является по умолчанию, если вы не'т указать типа, когда вы используете слово присоединиться.

вы можете также использовать левое внешнее соединение правое внешнее соединение или, в каком случае слово Outer является необязательным, или вы можете указать перекрестное соединение.

Или

для внутреннего соединения, используется следующий синтаксис:

выберите ... из таблицы tablea [внутренний] присоединяйтесь к таблице tableb

(другими словами, в "внутренний" и ключевое слово дополнительно - результаты такие же С или без него)

Комментарии (0)

это отличаться для разных реализаций SQL?

Да, Майкрософт доступ Не'т позвольте просто "присоединиться". Он требует внутреннее соединение.

Комментарии (0)

Аналогично с 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
Комментарии (3)

Как и другие ответы уже нет разницы в вашем примере.

Соответствующий бит грамматики документы

 ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [  ] ]
    JOIN

Показывая, что все они не являются обязательными. Страница уточняет, что

внутренний определяет все совпадающие пары строк, возвращаемых. Отбрасывает несовпадающих строк из обеих таблиц. Если не указан тип соединения, это > есть по умолчанию.

Грамматика также свидетельствуют о том, что есть один момент, где "внутренние" является обязательным. При указании присоединиться намек.

Смотрите пример ниже

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;

Комментарии (0)