Каково поведение JOIN по умолчанию T-SQL, INNER или OUTER?
Этот вопрос был задан для MySQL, но для Transact-SQL, каково поведение по умолчанию JOIN?
То есть просто пишет JOIN в запросе, синонимом записи INNER JOIN (как в случае с MySQL), или что-то еще, например, FULL OUTER JOIN?
Ответ 1
JOIN по умолчанию действует INNER JOIN.
Чтобы проверить это, я запустил следующий код:
DECLARE @A TABLE (x INT)
INSERT INTO @A
SELECT 1 UNION ALL
SELECT 2
DECLARE @B TABLE (x INT)
INSERT INTO @B
SELECT 2 UNION ALL
SELECT 3
SELECT
A.x AS 'A.x',
B.x AS 'B.x'
FROM @A A
JOIN @B B
ON A.x = B.x
Это создает только одну строку, соответствующую поведению INNER JOIN:
A.x | B.x
-----+-----
2 | 2
Контрастируйте это с помощью FULL OUTER JOIN:
...
SELECT
A.x AS 'A.x',
B.x AS 'B.x'
FROM @A A
FULL OUTER JOIN @B B
ON A.x = B.x
Указывает, что возвращаются все совпадающие пары строк. Выбрасывает непревзойденные строки из обеих таблиц. Если тип соединения не указан, это по умолчанию.
Ответ 3
Для некоторых ссылок MSDN.
Чтобы перефразировать, внутреннее соединение является стандартным типом соединения.