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

+894
источник поделиться
8 ответов

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

+976
источник

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

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

Enter image description here

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


+700
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

+220
источник

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

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

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

ИЛИ ЖЕ

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

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

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

+123
источник

Точно так же, как и 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
+47
источник

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

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

+46
источник

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

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

<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;

введите описание изображения здесь

+24
источник

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

-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос