Разница между соединением и внутренним соединением
оба эти соединения дадут мне те же результаты:
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ключевое слово, которое делаетJOINan"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;

