Разница между JOIN и INNER JOIN

Оба этих соединения дадут мне одинаковые результаты:

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

против

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

Есть ли разница между утверждениями в исполнении или иным образом?

Отличается ли это между различными реализациями SQL?

9 ответов

Решение

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

Просто печатать JOIN выполняет INNER JOIN по умолчанию.

Для всех остальных одна картинка иногда стоит больше, чем сотни слов:

Изображение предоставлено Code Project.


Нет, разницы нет, чистый синтаксический сахар.

INNER JOIN = ПРИСОЕДИНИТЬСЯ:

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

Вы также можете использовать LEFT OUTER JOIN или RIGHT OUTER JOIN, в этом случае слово OUTER является необязательным, или вы можете указать CROSS JOIN.

ИЛИ ЖЕ

Для внутреннего объединения синтаксис:

ВЫБРАТЬ...
ИЗ таблицы А
[INNER] РЕЙТИНГ TableB

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

Отличается ли это между различными реализациями SQL?

Да, Microsoft Access не позволяет просто join, Это требует inner join,

Аналогично с OUTER JOINs, слово "OUTER" не является обязательным. Это LEFT или же RIGHT keyword that makes the JOIN "OUTER" JOIN,

However for some reason I always use "OUTER" как в LEFT OUTER JOIN и никогда LEFT JOIN, but I never use INNER JOIN, but rather I just use "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

Показано, что все необязательно. Страница дополнительно поясняет, что

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;

INNER = INNER JOIN, но когда вы пишете INNER JOIN - вы можете провести аналогию с Sets From Math, поэтому INNER JOIN является пересечением на диаграмме Венна. Таким образом, INNER JOIN более интуитивно понятен, чем JOIN для новичка, в смысле того, что на самом деле делают ключевое слово INNER JOIN против ключевого слова JOIN, и вы можете узнать разницу между INNER JOIN и OUTER JOIN гораздо проще.
Пример внутреннего соединения ПРАВО НАРУЖНЫЙ ПРИСОЕДИНИТЬ пример

INNER JOIN — это то же самое, что JOIN. Никакого выигрыша в производительности или разницы в производительности нет. Оба дают пересечение при использовании с эквивалентным условием (например, один столбец таблицы равен одному столбцу второй таблицы), записанному в «ON».

Этого можно достичь в соответствии со старым синтаксисом и без использования слова join, как показано ниже.

ВЫБЕРИТЕ * ИЗ ТАБЛИЦЫ 1, ТАБЛИЦЫ 2, ГДЕ ТАБЛИЦА 1. СТОЛБЕЦ1= ТАБЛИЦА 2. СТОЛБЕЦ 4;

(Использование случайных чисел для столбцов)

Все вышеперечисленные три метода дают абсолютно одинаковый результат.

Другие вопросы по тегам