Ваш вопрос немного сложен для понимания. INNER
и OUTER
не являются параметрами . Это ключевые слова. Синтаксическая диаграмма не делает этого явным, но SQL поддерживает следующие JOIN
операторы:
JOIN
INNER JOIN
LEFT JOIN
LEFT OUTER JOIN
RIGHT JOIN
RIGHT OUTER JOIN
FULL JOIN
FULL OUTER JOIN
CROSS JOIN
Это попарно, кроме CROSS JOIN
. Другими словами, INNER
и OUTER
являются необязательными.
Почему это так? На мой взгляд, в установлении стандартов SQL мало "мудрости". Комитет по стандартам состоит (в основном) из представителей отрасли, из компаний, которые часто уже внедрили функциональность . Стандарты объединяют это "совместимо". Итак, некоторые участники хотели явно указать INNER
и OUTER
. Другие не сделали. «Компромисс» - разрешить и то, и другое.
Что касается вашего вопроса, эти запросы эквивалентны. Но правильный способ выразить логику избегает предложения ON
:
SELECT *
FROM T1 CROSS JOIN T2;