Разница между 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
19 февр. '09 в 14:47
источник поделиться
8 ответов

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

+976
19 февр. '09 в 14:50
источник

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


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

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

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

Enter image description here

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


+700
28 окт. '13 в 22:56
источник

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

+220
19 февр. '09 в 14:48
источник

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

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

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

ИЛИ ЖЕ

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

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

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

+123
28 февр. '12 в 8:23
источник

Точно так же, как и 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
19 февр. '09 в 15:09
источник

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

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

+46
15 мая '12 в 13:33
источник

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

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

<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
02 авг. '15 в 16:38
источник

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
17 янв. '19 в 15:10
источник

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