Разница между соединением и внутренним соединением
оба эти соединения дадут мне те же результаты:
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 является необязательным, или вы можете указать перекрестное соединение.
или
для внутреннего соединения, синтаксис:
выбрать ...
Из таблицы 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
и требуются. При указании подсказки соединения.Смотрите пример ниже
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;