Оба этих соединения дадут мне одинаковые результаты:
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
).
ВНУТРЕННЕЕ СОЕДИНЕНИЕ = ПРИСОЕДИНЯЙТЕСЬ К
внутреннее соединение является по умолчанию, если вы не'т указать типа, когда вы используете слово присоединиться.
вы можете также использовать левое внешнее соединение правое внешнее соединение или, в каком случае слово Outer является необязательным, или вы можете указать перекрестное соединение.
Или
для внутреннего соединения, используется следующий синтаксис:
выберите ... из таблицы tablea [внутренний] присоединяйтесь к таблице tableb
(другими словами, в "внутренний" и ключевое слово дополнительно - результаты такие же С или без него)
это отличаться для разных реализаций SQL?
Да, Майкрософт доступ Не'т позвольте просто "присоединиться". Он требует внутреннее соединение
.
Аналогично с 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
Как и другие ответы уже нет разницы в вашем примере.
Соответствующий бит грамматики документы
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
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;