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